Nginx 自建RTMP服务 对海康 大华 直播推流

在前面的文章中,我们讲到了利用EasyDarwin搭建直播推流。虽然提供了可视化界面,便于统一管理等优势。但是也存在很多不足。如部分摄像头推流不支持密匙,这时我们便需要自己动手搭建推流服务器了。

实验环境

  • 公网服务器
  • Nginx(为方便演示,以宝塔为例)
  • 大华P20A2-WT

安装Nginx-Rtmp模块

首先登录宝塔后台,安装nginx等三贱客。如果已安装,先做好备份。备份完成后,卸载宝塔所安装的Nginx。然后找到/www/server/panel/install/nginx.shCtrl+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

图片
图片

摄像头推流

图片

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

图片