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 Nginx+RTMP流媒体服务器搭建以及测试

Windows Nginx+RTMP流媒体服务器搭建以及测试

RTMP是Real Time Messaging Protocol(实时消息传输协议)的缩写。基于TCP,是一种用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒...

Nginx搭建Rtmp流媒体服务器,实现视频直播功能(Linux)

Nginx搭建Rtmp流媒体服务器,实现视频直播功能(Linux)

一、环境介绍操作系统:虚拟机运行的Ubuntu18.04 64位系统二、流媒体服务器介绍百度百科: 流媒体指以流方式在网络中传送音频、视频和多媒体文件的媒体形式。相对于下载后观看的网络播放形式而言,流...

Windows本地搭建rtmp推流服务

Windows本地搭建rtmp推流服务

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

从零开始搭建自己的RTSP/RTMP视频服务器

从零开始搭建自己的RTSP/RTMP视频服务器

搭建RTSP视频服务器成为必要选择,特别是在处理移动端或边缘设备的视频数据时。通过此服务器,实现将采集的视频数据回传至服务端,为算法分析提供更强支持。这种架构提升了算法的实时性和准确性,同时中心化管理...

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

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

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