nginx+rtmp流媒体服务器搭建
一、nginx+rtmp简介
Nginx本身是一个非常出色的HTTP服务器,FFMPEG是非常好的音视频解决方案.这两个东西通过一个nginx的模块nginx-rtmp-module,组合在一起即可以搭建一个功能相对比较完善的流媒体服务器. 这个流媒体服务器可以支持RTMP和HLS(Live Http Stream)。
二、具体部署步骤
1. 下载nginx和nginx-rtmp-module
下载Nginx-rtmp-module
git clone https://github.com/arut/nginx-rtmp-module.git
1
下载Nginx并解压
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar -zxvf nginx-1.14.2.tar.gz
1
2
2. 编译安装Nginx和Nginx-rtmp-module
安装nginx的依赖
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev
编译并配置nginx
使用nginx的默认配置,添加nginx的rtmp模块。 add-module为下载的nginx-rtmp-module文件路径。
cd nginx-1.14.2/ # 进入nginx的目录下
./configure --add-module=../nginx-rtmp-module
make
make install
3. 运行测试nginx
进入安装目录/usr/local/nginx,运行命令./sbin/nginx,nginx重启命令为 ./sbin/nginx -s reload.查看部署是否成功!
4. 点播视频服务器的配置。
#rtmp配置
rtmp {
server {
listen 1935; #监听服务端口
chunk_size 4096; # 数据传输块的大小
application vod {
play /home/zane/video/vod;#视频文件的存放位置
}
}
}
在配置目录/home/zane/video/vod;放一个视频文件,放好之后重启Nginx服务器!
使用vlc 播放器,输入rtmp://114.115.240.14/vod/test.mp4
播放结果:
5. 直播视频服务器的配置
在点播服务器配置文件的基础上添加直播服务的配置。需要添加的一共有2个位置,第一处就是给RTMP服务添加一个application(这个名字可以任意起),也可以起多个名字,由于是直播我就叫做它live吧,如果打算弄多个频道的直播就可以live_cctv1、live_cctv2名字任意。第二处就是添加两个location字段.
#rtmp配置
rtmp {
server {
listen 1935; #监听服务端口
chunk_size 4096; # 数据传输块的大小
application vod {
play /home/zane/video/vod;#视频文件的存放位置
}
application live{ #添加的直播字段!
live on;
}
}
}
location /stat { # 第二处添加的location字段
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl{ #第二处添加的location字段
root /home/zane/nginx-rtmp/nginx-rtmp-module/;
}
添加完成之后,重启Nginx服务器,打开浏览器,输入http://114.115.240.14:81/stat(根据你自己的服务器信息组装地址)
接着使用EV录屏向流媒体服务器进行推流:
此时根据nginx的状态信息可以看到:多出红框内东西,说明推流成功!
使用vlc播放器播放地址rtmp://114.115.240.14/live/test,可进行播放。
nginx+rtmp的直播配置到此结束!
6. 支持回看的直播视频服务器
在上一步的基础上,增加支持回看部分的配置
# rtmp配置
application live{ #添加的直播字段!
live on;
hls on; # 这个参数把直播服务器改造为实时回放服务器。
wait_key on; #对视频切片服务器进行保护,这样就不会产生马赛克了!
hls_path /home/zane/video/hls;#切片视频文件存放位置
hls_fragment 600s; #设置HLS片段长度
hls_playlist_length 10m; #设置HLS播放列表长度,这里设置的是10分钟
hls_continuous on; #连续模式。
hls_cleanup on; #对多余的切片进行删除。
hls_nested on; #嵌套模式:
}
#在 http 配置中增加一个location
location /live {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias /home/zane/video/hls;
expires -1;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
配置完之后重启nginx,然后用vlc播放器测试