Nginx 自建RTMP服务 对海康 大华 直播推流
在前面的文章中,我们讲到了利用
EasyDarwin搭建直播推流。虽然提供了可视化界面,便于统一管理等优势。但是也存在很多不足。如部分摄像头推流不支持密匙,这时我们便需要自己动手搭建推流服务器了。
实验环境
公网服务器 Nginx(为方便演示,以宝塔为例) 大华P20A2-WT
安装Nginx-Rtmp模块
首先登录宝塔后台,安装nginx等三贱客。如果已安装,先做好备份。备份完成后,卸载宝塔所安装的Nginx。然后找到/www/server/panel/install/nginx.sh,Ctrl+F找./configure。
添加模块--add-module=/www/server/nginx_plus/nginx-rtmp-module

下载nginx-rtmp
接下来,下载nginx-rtmp模块到宝塔的模块目录。
git clone https://github.com/arut/nginx-rtmp-module /www/server/nginx_plus/nginx-rtmp-module/
重新安装nginx
sh /www/server/panel/install/nginx.sh install 1.22
注意:install 1.22 为安装nginx1.22版本。如你需要1.24则输入install 1.24
验证
输入nginx -V,检验相应模块是否安装。

新建站点
在宝塔中,新建一个站点。在站点配置文件中,添加跨域。
#跨域
add_header 'Access-Control-Allow-Origin' '*' ;
#可以是你的网站域名也可以是*任何网站
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";

修改Nginx配置
在软件商城-Nginx-修改配置文件。
加入rtmp
rtmp {
server {
listen 9999; #端口,记得安全组/宝塔等防火墙放行
chunk_size 4000; #单个ts文件的大小,可以适当改小一点减少延迟,但会对服务器带宽/硬盘带来压力
application hls { #有多个直播流推入,复制 application即可。
live on;
hls on;
hls_path /www/wwwroot/she.com/live; #直播缓存文件目录,也是站点的目录。
hls_fragment 5s;
}
}
}

在server中添加输入如下:
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /root/nginx-rtmp-module/;
}
location /live {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /www/wwwroot/test.sshouxin.xyz;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}

添加完成后,保存重启nginx!
测试
在obs中添加推流地址rtmp://ip:9999/hls/

推流成功后,我们可以在新建网站的目录下看到生成的m3u8文件。

m3u8测试
访问http://新建站点的域名/live/.m3u8


摄像头推流

注意,由于主流码视频格式比较高,在推流过程中,容易失败。而辅流码比较低,推送正常。




