nginx + nginx-rtmp-module(单纯rtmp,浏览器以不支持播放)
github
https://github.com/arut/nginx-rtmp-module
最近的更新是2021年的,可能真的不更新了吧(也可能转其他仓库了),
nginx配置
先在windows本地测试
windows设置(未完成)
不建议---因为需要自己编译的
- 下载nginx,并成功访问初始页面(如果80端口一直访问失败,可以把conf文件的端口改成8090,来判断是否是端口占用问题)
- 下载rtmp模块
下载nginx并成功访问
https://nginx.org/en/download.html
解压后(路径不要出现中文)
windows的PowerShell支持linux命令
更换端口为8090(也可以先尝试80端口是否可以)
开启nginx
访问localhost:8090,出现下面则成功,接着去下载rtmp模块即可,下面是一些命令
开启nginx后不能通过终端推出,需要再开一个终端
查看相关进程 tasklist /fi "imagename eq nginx.exe" 关闭nginx ./nginx -s stop 以指定文件启动nginx ./nginx -c .\conf\nginx.conf
下载rtmp模块
https://github.com/arut/nginx-rtmp-module
linux配置
注意,不仅要开启阿里云服务器的安全组80和1935
同时服务器的防火墙还是需要开启,我这里是用的iptables,防火墙修改后docker是需要重启的,
这里要自己考虑情况
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1935 -j ACCEPT
systemctl restart iptables.service
nginx+rtmp
这里是nginx+rtmp
cd /opt mkdir nginx cd nginx git clone https://github.com/arut/nginx-rtmp-module.git wget http://nginx.org/download/nginx-1.24.0.tar.gz [root@iZbp1c400avts4bhhmibppZ nginx]# ls nginx-1.24.0.tar.gz nginx-rtmp-module
解压
tar -zxvf nginx-1.24.0.tar.gz
安装需要的配置(直接添加rtmp模块的话会报错并提示这两个依赖库)
yum -y install pcre yum -y install openssl openssl-devel
cd nginx-1.24.0 ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-file-aio --with-http_realip_module --add-module=../nginx-rtmp-module --add-module=../nginx-module-vts-master
下面的configuration就是配置路径
编译
make && make install
第一次启动
cd /usr/local/nginx sbin/nginx
访问ip:80端口表示成功(因为是编译安装的可能之前yum安装的service未卸载完成,会出现下列情况)
修改nginx的conf文件夹下的nginx.conf文件
cd /usr/local/nginx/ vim conf/nginx.conf
rtmp与http同级别
rtmp { # rtmp server { listen 1935; chunk_size 4000; application live { live on; } application live { play /opt/video; } } }
添加部分在http的server里
注意/stat.xsl的路径,按照自己的路径,否则/stat是空白的,/stat.xsl是404
location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /opt/nginx/nginx-rtmp-module/; # 这里是下载的rtmp的stat.xsl的路径 }
最终文件
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } rtmp { # rtmp server { listen 1935; chunk_size 4000; application live { live on; } application live { play /opt/video; } } } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /opt/nginx/nginx-rtmp-module/; # 这里是下载的rtmp的stat.xsl的路径 } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
测试
[root@iZbp1c400avts4bhhmibppZ sbin]# ./nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
使用新配置文件
在opt/video下放test.mp4(路径和nginx.conf的rtmp的play设置一致)
cd /usr/local/nginx sbin/nginx -s reload
访问ip/stat
方法一:使用ffmpeg,自动弹出
ffplay rtmp://ip:1935/video/test.mp4
方法二:使用VLC media player
linux下卸载nginx
[root@iZbp1c400avts4bhhmibppZ nginx]# ps -ef | grep nginx root 8419 7392 0 15:20 pts/0 00:00:00 grep --color=auto nginx # 停止nignx /usr/local/nginx/sbin/nginx -s stop [root@iZbp1c400avts4bhhmibppZ nginx]# find / -name nginx ... # 这个是编译mades的path默认在usr/local/nginx [root@iZbp1c400avts4bhhmibppZ objs]# rm -rf /usr/local/nginx # 这个是解压后的文件夹 [root@iZbp1c400avts4bhhmibppZ objs]# rm -rf /opt/nginx/nginx-1.24.0