• 监控、无人机摄像头RTSP协议对接腾讯云直播


    监控、无人机摄像头RTSP协议对接腾讯云直播

    1. 需求与目标

    传统监控高清摄像机ip camera(如: 海康,大华等)遵循监控行业标准,一般只支持rtsp传输协议,互联网直播通用标准为rtmp协议,将这些摄像机视频流引入互联网直播是一个较共性需求,如:咖啡连锁企业通过摄像头将咖啡制作过程直播出去;监控景点直播;户外楼宇直播等。

    典型摄像头(海康威视ds-2cd1221-i3网络监控摄像头)配置:

    自主搭建完整可商用的互联网直播平台研发和维护成本巨大,我们一般采用成熟的直播云平台,如:腾讯云直播平台。对接腾讯云直播需要解决的问题:

    1、 摄像头的RTSP协议数据采集

    2、 采集到的数据本地可以处理,并可通过RTMP协议推送流到腾讯云进行互联网直播。

    3、 腾讯云封装了一系列的操作,包括转码、录制、分发等。

    2. 实现方案

    以上面海康摄像头为例:

    1)通过rtsp协议获取到摄像头的直播数据,形如: rtsp://admin:12345@192.168.1.5:554/h264/ch1/main/av_stream

    2)通过ffmpeg从摄像头拉取rtsp视频数据流实现采集,并转发到nginx-rtmp

    3) nginx-rtmp转推rtmp流到腾讯云实现互联网直播

    3.软件安装

    软件环境信息: - 操作系统:Centos 7.2 - ffmpeg版本:2.8.15 - nginx版本:1.14.2

    1) ffmpeg安装

    采用yum方式安装即可。

    1. sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm
    2. yum -y install ffmpeg

    2) nginx-rtmp安装和配置

    nginx默认不带nginx-rtmp-module,需要通过源码编译形安装。

    安装必须的组件

    yum -y install openssl openssl-devel

    下载nginx-rtmp-module源码

    git clone https://github.com/arut/nginx-rtmp-module.git

    下载nignx源码

    1. wget http://nginx.org/download/nginx-1.14.2.tar.gz
    2. tar zxvf nginx-1.14.2.tar.gz
    3. cd nginx-1.14.2/

    编译和安装

    1. ./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module
    2. make
    3. make install

    4.对接测试配置

    1)开通腾讯云直播

    开通服务

    进入控制台,选择拉流转推接入方式,生产推流地址

    推流后控制台进行观看

    2)nginx-rtmp配置

    创建nginx本地文件存放目录

    mkdir -p /mnt/share/html/hls

    rtmp配置

    1. vi /usr/local/nginx/conf/nginx.conf
    2. #文件末尾追加
    3. rtmp {
    4. server {
    5. listen 1935; #监听的端口
    6. chunk_size 4000;
    7. # rtmp推流请求路径
    8. application hls {
    9. live on;
    10. hls on;
    11. # 本地保存hlv格式文件
    12. hls_path /mnt/share/html/hls;
    13. hls_fragment 10s;
    14. # 转推腾讯云
    15. push rtmp://2490.livepush.myqcloud.com/live/rtsptest?bizid=2490&txSecret=d39774d3ce88ad218fe54eb84783a5af&txTime=5C1281FF;
    16. }
    17. }
    18. }

    检查配置是否正确

    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 

    启动nginx

    /usr/local/nginx/sbin/nginx   

    (可选)再次修改配置后重启nginx

    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s reload

    3) ffmpeg拉摄像头的视频流

    通过ffmpeg从远端摄像头拉取rtsp流,转换成flv格式,推到本地nginx-rtmp

    ffmpeg -i "rtsp://admin:12345@192.168.1.5:554/h264/ch1/main/av_stream "  -f flv -y  "rtmp://127.0.0.1:1935/hls"

    3) 检测

    按照上面配置后,可以进行两步检测。

    1)检测ffmpeg从摄像头拉流到nginx-rtmp, 如果成功,可以看到:

    1. cd /mnt/share/html/hls
    2. #注:该目录每10秒生产一个HLV格式的ts文件
    3. [root@VM_16_62_centos hls]# ll
    4. total 63840
    5. -rw-r--r-- 1 nobody nobody 10797592 Dec 13 17:57 mystream-0.ts
    6. -rw-r--r-- 1 nobody nobody 10873544 Dec 13 17:57 mystream-1.ts
    7. -rw-r--r-- 1 nobody nobody 10555072 Dec 13 17:57 mystream-2.ts
    8. -rw-r--r-- 1 nobody nobody 10884260 Dec 13 17:58 mystream-3.ts
    9. -rw-r--r-- 1 nobody nobody 10913212 Dec 13 17:58 mystream-4.ts
    10. -rw-r--r-- 1 nobody nobody 10848916 Dec 13 17:58 mystream-5.ts
    11. -rw-r--r-- 1 nobody nobody 378256 Dec 13 17:58 mystream-6.ts
    12. -rw-r--r-- 1 nobody nobody 268 Dec 13 17:58 mystream.m3u8
    13. [root@VM_16_62_centos hls]#

    2)检测是否推送到腾讯云,如果推送成功,控制可以看到“直播状态”为直播中。

     

    5.参考

    1. ffmpeg安装:https://rpmfusion.org/Configuration
    2. nginx安装:http://www.nginx.cn/install
    3. nginx-rtmp-module配置:https://github.com/arut/nginx-rtmp-module
    4. 腾讯云直播:https://cloud.tencent.com/document/product/267
    5. 欢迎访问域名管理:https://yoyomold.com
  • 相关阅读:
    基于阿里云 Serverless 函数计算开发的疫情数据统计推送机器人
    轻量封装WebGPU渲染系统示例<35>- HDR环境数据应用到PBR渲染材质
    测试----计算机网络
    【沧元图】玉阳宫主是正是邪,和面具人有勾结吗?现在已有答案了
    项目保密协议书(范本)
    Linux系统切换用户后只显示$问题解决
    什么是数据压缩?解释数据压缩的原理和不同的压缩算法
    测试面试精选题:可用性测试主要测试哪些方面,举例说明
    当添加一个键值对元素时,HashMap发生了什么?
    一文吃透哈希表
  • 原文地址:https://blog.csdn.net/fyc__iOS/article/details/125636090