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

LiveServer2年前 (2024-06-10)教程文章

在前面的文章中,我们讲到了利用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

图片
图片

摄像头推流

图片

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

图片


相关文章

Windows本地搭建rtmp推流服务

Windows本地搭建rtmp推流服务

前言开发时偶尔需要使用rtmp直播流做视频流测试,苦于网上开源的rtmp视频流都已经失效,无奈只好尝试在本地自己搭建一个rtmp的推流服务,方便测试使用一、工具准备Nginx:使用nginx-rtmp...

RTMP 在直播场景的应用与动手实践

RTMP 在直播场景的应用与动手实践

RTMP (Real Time Messaging Protocol)简介RTMP(Real Time Messaging Protocol)是一种设计用于实时数据通信的网络协议,主要用于在 Flas...

海康 大华 监控设备RTMP实时推流直播

海康 大华 监控设备RTMP实时推流直播

笔者最近的业务中,需要将机房的摄像头的图像在大屏或者html页面展示出来。本文以大华摄像头为例,介绍具体的做法。使用场景设备清单大华摄像头(P20A2-WT)但笔者还是推荐海康。本地同机房主机(Lin...

windows下使用Nginx搭建Rtmp流媒体服务器,实现视频直播功能

windows下使用Nginx搭建Rtmp流媒体服务器,实现视频直播功能

一、环境介绍操作系统:win10 64位系统二、流媒体服务器介绍流媒体服务器的主要功能是以流式协议(RTP/RTSP、MMS、RTMP等)将视频文件传输到客户端,供用户在线观看;也可从视频采集、压缩软...