这两天项目有用到直播服务器,结合网上的一些教程和自己踩的坑,记录一下
安装git,后续需要使用到git下载Nginx-rtmp包,
yum -y install git
下载rtmp模块源码
git clone https://github.com/arut/nginx-rtmp-module /www/server/nginx_plus/nginx-rtmp-module/
由于是外网,速度可能很慢不一定能下载下来,需要修改一下git的缓存配置和最低下载时间配置,如果可以正常下载跳过这一步。配置命令如下:
git config --global http.postBuffer 524288000
git config --global http.postBuffer 1048576000
下载成功后的rtmp模块就到了/www/server/nginx_plus/nginx-rtmp-module/这个路径下,此时模块就已经下载好了,后面就是Nginx的配置了。
我用的是宝塔面板,宝塔提供了两种安装Nginx的方式,一种是急速安装,一种是编译安装,在这里建议使用编译安装,如果已经安装了Nginx但是不确定是否使用编译安装的可以先卸载后重新安装。宝塔的Nginx安装在/www/server/nginx 目录下。
安装完Nginx之后进入到/www/server/panel/install/目录下,编辑Nginx.sh文件,这里用命令行vi或者宝塔编辑都可以,大概在两百多行
在./configure后面添加--add-module=/www/server/nginx_plus/nginx-rtmp-module,后面的路径对应上面的模块安装路径,保存后运行脚本重新安装Nginx,命令行运行命令
sh /www/server/panel/install/nginx.sh install
安装完成后进入Nginx安装目录运行nginx -V命令,查看安装信息,如果找到对应模块就说明安装完啦
这一步我踩的坑主要是原有的Nginx不是通过编译安装的,它没有一些编译信息,可能是因为自己水平不够,没有去深究,后面通过编译安装找到了对应的代码,然后成功了,第二个坑就是Nginx版本的问题,一般来说宝塔上的版本普遍支持上面的安装方式。不过我执行nginx.sh文件手动设置安装的版本有两次出现了问题,也是头疼。
nginx安装后后就只剩下nginx.cof的配置问题了,编辑/www/server/nginx/conf/nginx.conf文件,在events下添加同级代码
rtmp {
server {
listen 1935; #监听的端口
chunk_size 4000;
application hls { #使用rtmp 协议播放 (例如:播放器访问地址 rtmp://localhost:1935/hls/test)
live on;
hls on;
#视频流存放地址,建议填写自己网站的目录
hls_path /www/wwwroot/home/video;
hls_fragment 8s;
hls_continuous on; #连续模式。
hls_cleanup on; #对多余的切片进行删除。
}
}
}
保存后在宝塔面板重载nginx配置,或者通过命令重启nginx都可以
nginx -s reload
这一步踩的坑就是保存配置时报错:“nginx:[emerg] unknown directive "rtmp" ”,这里的错我总结了一下原因
1.rtmp端口没有开放,需要去配置安全组
2.rtmp路径和nginx.sh里面的不一致,需要自己去核对
保存完配置重载配置后nginx正常启动就说明rtmp模块安装完了,到这一步直播服务器基本搭建完成。
测试工具我用力obs和vlc播放器,
obs做推流
在设置中输入 自己的服务器地址
rtmp://服务器ip:1935/hls/test
/hls:这个是自己在nginx.conf里面添加的路径(这个一定要一致,不然会导致推流失败),后面的串流密钥这个自己可以随便填写,推流视频来源可以选择本地视频(媒体源)或者显示器采集,点击推流后如果obs底部出现了绿色小方块,就说明推流成功了
播放:
vlc播放器,输入你的推流地址rtmp://服务器ip:1935/hls/test
让子弹飞一会,显示成功就说明没有问题,直播服务器搭建完成。