搭建基于rtmp协议的推流服务器。

环境Linux centos 7.6 + Nginx

1.安装Nginx

安装Nginx依赖库:

#安装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,进入到下载路径,输入下载命令:

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端口:

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拓展:

cd /usr/local/nginx
./configure –add-module=/opt/module/nginx-rtmp-module
make
make install
配置Nginx的rtmp服务站点:

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:

nginx -s reload
测试:windows打开doc,输入:

telnet 你的ip地址 1935
如果失败,则开启1935端口:

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:
%title插图%num

设置完成点击推流。

在服务器就看到m3u8文件的生成,推流成功。

%title插图%num

拉流。测试拉流的网站:https://www.wowza.com/testplayers

设置如下:

%title插图%num