音视频服务器搭建
本文采用
nginx/1.18.0
和nginx-rtmp-module
模块源代码搭建RTMP
流媒体服务器
流程
- 查看当前服务器的nginx版本
- 下载nginx和nginx-rtmp-module源代码
- 重新编译nginx,并进行相关配置(nginx.conf、防火墙等)
- 客户端测试连接
- 测试搭建的直播与点播功能
查看当前nginx版本,并下载对应的源代码
-
nginx版本:
nginx -V
-
下载对应源码:将以下两个文件安装到同一个路径下(如新建一个/cml路径)
- 下载nginx源码:
wget http://nginx.org/download/nginx-1.18.0.tar.gz
、tar -zxvf nginx-1.18.0.tar.gz
- 下载nginx-rtmp-module模块源码:
git clone https://github.com/arut/nginx-rtmp-module.git
- 下载nginx源码:
重新编译并配置nginx
-
进入nginx-1.18目录,执行configure可执行文件
shell./configure --prefix=/home/ubuntu/cml/nginx-1.18.0/build --add-module=/home/ubuntu/cml/nginx-rtmp-module
参数说明:
第一个参数
--prefix=/home/ubuntu/cml/nginx-1.18.0/build
指明安装路径第二个参数
--add-module=/home/ubuntu/cml/nginx-rtmp-module
指明导入的模块再执行
make install
指令生成build目录
-
配置nginx.conf文件
shellrtmp { server { listen 1935; chunk_size 4096; # live on application rtmp_live { live on; # hls on; #这个参数把直播服务器改造成实时回放服务器。 # wait_key on; #对视频切片进行保护,这样就不会产生马赛克了。 # hls_path ./sbin/html; #切片视频文件存放位置。 # hls_fragment 10s; #每个视频切片的时长。 # hls_playlist_length 60s; #总共可以回看的时间,这里设置的是1分钟。 # hls_continuous on; #连续模式。 # hls_cleanup on; #对多余的切片进行删除。 # hls_nested on; #嵌套模式。 } # play videos application rtmp_play{ play ./videos; #build directory } } }
-
启动nginx服务
shellsudo ./sbin/nginx
-
打开端口防火墙
sudo ufw allow 1935/tcp
-
通过ffmpeg客户端命令测试服务器是否搭建成功
-
ffmpeg -i test.flv -vcodec libx264 -acodec aac -f flv rtmp://8.134.156.7:1935/rtmp_live/mystream
出现以下画面则服务器搭建成功。
-
如果出现以下错误:
Connection to tcp://8.134.156.7:1935 failed: Error number -138 occurred [rtmp @ 00000202d836e940] Cannot open connection tcp://8.134.156.7:1935 rtmp://8.134.156.7:1935/rtmp_live/mystream: Unknown error
请再度检查防火墙是否开放该端口,或再次重启nginx服务
systemctl status nginx
测试服务器直播效果
打开
VLC
视频测试工具,选择媒体->打开网络串流 -> 输入网络地址 rtmp://xxx.xxx.xxx:1935/rtmp_live/mystream*
,再客户端推送rtmp流到服务器
推送成功
测试rtmp服务器的点播效果
在系统中准备好测试的点播文件
-
打开网络流:rtmp://xxx.xxx.xxx:1935/rtmp_play/test.flv
,点播打开成功。
参考文献
[1] https://mp.weixin.qq.com/s/axPKe2m2Cn6W17v56j-UQQ
[2] 视频教程