搭建基于rtmp协议的推流服务器。
环境Linux centos 7.6 + Nginx
1.安装Nginx
安装Nginx依赖库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#安装Nginx的编译环境gcc yum install gcc-c++ #nginx的http模块使用pcre解析正则表达式所以安装perl兼容的正则表达式库 yum install -y pcre pcre-devel #nginx使用zlib对http包的内容进行gzip yum install -y zlib zlib-devel #nginx不仅支持http协议,还支持https(即在ssl协议上传输http),如果使用了https,需要安装OpenSSL库 yum install -y openssl openssl-devel |
下载Nginx,下载地址: http://nginx.org/en/download.html 选择下载的版本,我这里选择 nginx-1.15.3,进入到下载路径,输入下载命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
cd /usr/local/ wget http://nginx.org/download/nginx-1.15.3.tar.gz tar -zxvf nginx-1.15.3.tar.gz rm nginx-1.15.3.tar.gz mv nginx-1.15.3 nginx cd nginx ./configure --prefix=/usr/local/nginx make make install #遇到make错误 /usr/local/nginx 路径不存在不管,继续 make install #添加Nginx环境变量,可以在命令行直接输入Nginx命令 vim /etc/profile #在最后添加Nginx的路径 export NGINX_HOME=/usr/local/nginx export PATH=$PATH:$NGINX_HOME/sbin #重新编译环境变量 source /etc/profile #启动nginx cd sbin ./nginx #我这边启动时报错: nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory) 2018/09/25 13:59:56 [emerg] 15555#0: open() "/usr/local/nginx/logs/access.log" failed (2: No such file or directory) #需要手动创建logs文件夹 mkdir /usr/local/nginx/logs #再启动 ./nginx #重启命令: nginx -s reload |
Nginx安装完成,测试:打开浏览器输入IP地址显示欢迎界面则安装启动成功,如果显示访问超时,则可能是防火墙没有打开80端口。打开80端口:
1 |
iptables -I INPUT -p tcp --dport 80 -j ACCEPT |
2.安装Nginx的rtmp拓展
nginx的rtmp拓展包github地址:https://github.com/arut/nginx-rtmp-module,可以使用git clone下拉或者直接下载,我这边下载解压放到:/opt/module/下。Nginx安装rtmp拓展:
1 2 3 4 5 6 7 8 9 |
cd /usr/local/nginx ./configure --add-module=/opt/module/nginx-rtmp-module make make install |
配置Nginx的rtmp服务站点:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
vim /usr/local/nginx/conf/nginx.conf # 在文件底部添加下面内容: rtmp { server { listen 1935; #监听的端口 chunk_size 4000; application tv_file { live on; #开启实时 hls on; #开启hls hls_path /usr/local/nginx/html/tv_file; #rtmp推流请求路径,文件存放路径 hls_fragment 5s; #每个TS文件包含5秒的视频内容 } } } |
重启Nginx:
1 |
nginx -s reload |
测试:windows打开doc,输入:
1 |
telnet 你的ip地址 1935 |
如果失败,则开启1935端口:
1 |
iptables -I INPUT -p tcp --dport 1935 -j ACCEPT |
3.推拉流测试
推流。下载OBS Studio,官网下载太慢了,其他下载地址:https://pc.qq.com/detail/4/detail_23604.html
安装完成,打开软件,在来源版块新建媒体源,本地文件选择一个视频视频,勾选循环,去除勾选播放结束隐藏源,在控件版块点击设置,左边的导航选择流,然后流类型选择自定义流媒体服务器,url输入rtmp://你的IP:1935/tv_file,流名称随便设置一个,这里设置zm:
设置完成点击推流。
在服务器就看到m3u8文件的生成,推流成功。
拉流。测试拉流的网站:https://www.wowza.com/testplayers
设置如下:
from:https://blog.csdn.net/mxdzchallpp/article/details/86551564