背景
如果学习研究或者对流媒体服务器要求不高的情况下,可以直接拿NRM作为服务器,它是基于Nginx这个经典的开源软件作为平台,以模块的形式,实现的RTMP的流媒体服务器。接下来,搭建此服务器,通过OBS推流,VLC拉流。当然,如果在工程中使用,完全可以自己实现推流和拉流的功能。
安装并运行NRM
下载Nginx
http://nginx.org/en/download.html
下载NRM
https://github.com/arut/nginx-rtmp-module
安装依赖包
apt-get install libpcre3 libpcre3-dev
apt-get install openssl libssl-dev
编译
cd nginx-1.12.2
./configure --add-module=/root/nginx/nginx-rtmp-module-master
make ; make install
设置配置文件: rtmp.conf
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 {
server {
listen 1935;
application myapp {
live on;
}
}
}
运行
/usr/local/nginx/sbin/nginx -c /root/nginx/nginx-1.12.2/conf/rtmp.conf
推流
使用OBS推流。Linux版和Windows版都有,下载地址:
https://obsproject.com/
下载,安装,打开。导入视频源
进入设置
设置推流服务器
点击开始推流
拉流
遇到的问题
服务器设置好,OBS开始推流时,报出上面的错误。经过排查挺长时间,才找到原因:推流服务器地址设置有问题:
后面多了live,去掉就好了。主要是前期对obs设置推流地址不熟悉,从网上查了很多资料,弄混了。
这个串流秘钥可以作为设备地址进行推流,从而实现多设备转发,用处还是很大的。
FFmpeg推流
当然也可以通过FFmpeg进行推流,ffplay进行播放,都是可以的。
ffmpeg推流
ffmpeg -re -i test.mp4 -c:v libx264 -c:a copy -f flv rtmp://172.16.11.97:1935/myapp/123
ffplay拉流
ffplay -i rtmp://172.16.11.97:1935/myapp/123
效果
由于是分发机制,所以,只要服务器性能及带宽允许,可以接很多客户端来播放。