基于传统IPC基础上的RTMP互联网推流摄像机方案设计

时间:2024-03-11 19:32:52

在我之前的一篇博客《EasyRTMP内置进入摄像机中实现网络推流直播摄像机的功能》中,我阐述了一种将RTMP推流内置到摄像机系统内部,实现安防摄像机转互联网直播的RTMP推流摄像机功能,如果搭载在高清的IPC上,可以实现一个 非常低成本、高性价比的互联网高清直播摄像机!

但是,这只是个推流,或者说,只是一个程序,或者说是一个SDK,那么如果要做成一个产品,仅仅是有核心功能是不够的,我们还需要将整个音视频的采集、编码、回调、转码、推流、配置、停止等一系列流程,如何将整个链条完全串联和控制,是一个推流产品应该做到的;

  • 音视频源:直接由传统摄像机方案输出,例如RTSP、厂家的SDK(NetSdk、NetLib、LocalSdk)等等;
  • 转码:由于安防出来的音频数据大多数G.711/G.726类型的,所以需要进行一次音频的转码过程,编码成AAC数据;
  • 推流:RTMP推流过程;
  • 接口控制:整个音视频源获取、转码、推流过程的配置获取/设置、推流过程的启/停,等接口(http+json);

RTMP推流摄像机实现方案

  • 基于EasyRTSPClient / 摄像机SDKEasyAACEncoderEasyRTMP整合出,以设备编码源或RTSP流源作为音视频输入源,同时集成AAC转码的RTMP推流整套API方案;
  • 基于上述API做一个推流管理器:配置、控制各推流通道及监视推流状态,同时向用户提供简单的web配置接口,用户可以通过浏览器配置通道推流地址及音视频源选择,及监视通道状态;

一、整合的RTMP推流API

基本上就是基于EasyRTMP、EasyAACEncoder及EasyRTSPClient库再封装出一个扩展型RTMP推流API,若音频编码不是aac则调AasyAACEncoder arm版转码,若源是rtsp则调EasyRTSPClient实现,如果license失败就只能屏蔽相应功能。

二、RTMP推流方案HTTP RESTful服务

管理器根据配置文件配置及管理推流,同时通过http服务接受用户配置并存入配置文件,推流配置包括基本源配置(有设备源和RTSP源),推流控制包括启停通道,设置RTMP推流地址;

HTTP服务提供推流状态及现有配置显示,及配置SET服务,浏览器请求后结合html+RESTful用于显示当前配置, 用户点击设置后浏览器通过http_get的url_query_params提交配置参数,http简易服务器自己实现,http解析可以使用http-parser库,配置文件使用ini文件格式,配置文件原形:

    [base]
    EasyRTMP_License=xxx
    EasyAACEncoder_License=xxx
    EasyRTSPClient_License=xxx

    Enable=true
    Source=local/RTSP
    RtspUrl=rtsp://xxxx
    RtmpUrl=rtmp://xxxx

三、web页面原形
只提供一个页面用于状态显示及配置

    连接状态:已连接推流摄像机/未连接推流摄像机
    推流状态: 推流中|通道错误|推流停止
    控制: [启动] | [禁用]
    源选择: 设备 | [RTSP]        [应用]
    RTSP源地址: [rtsp://xxx]       [设置]
    RTMP地址: [rtmp://xxx]        [设置]

获取更多信息

邮件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

EasyDarwin