zoukankan      html  css  js  c++  java
  • 基于传统IPC基础上的RTMP互联网推流摄像机方案设计

    在我之前的一篇博客《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

  • 相关阅读:
    一种可以实时检测IP地址合法性的EditText输入框
    LVDS 屏幕 M215HGE-L21 在 rk3288 上的适配过程
    轻读一下 Android 应用开发中的 assets 目录
    XML与其在Android下的解析
    Linux Shell脚本实现根据进程名杀死进程
    RSA host key has changed 错误
    Linux下安装jdk8步骤详述
    Windows/Linux javac/java编译运行引入所需的jar包
    No cached version of ..... available for offline mode.
    Java学习之InputStream中read()与read(byte[] b)
  • 原文地址:https://www.cnblogs.com/babosa/p/7468285.html
Copyright © 2011-2022 走看看