• 如何基于EasyDSS流媒体RTMP、HLS(m3u8)、HTTP-FLV、RTSP服务器体系的全套SDK完成各种场景下的视频应用需求


    需求背景

    回顾EasyDSS的发展过程,基本上保持的是先局部后系统、先组件后平台的发展方式,一步一步夯实每一个细节功能点,从最基础、最兼容的音视频数据的拉流获取,到高效的、全兼容的数据推流,再到流媒体服务器对音视频数据的高性能分发,与全平台的音视频播放,这一整条音视频数据传输链路的形成,足够满足各种千变万化的音视频应用的需求场景。

    尤其是在安防领域,其主要特点是设备多、用户少、智能化要求高,我们需要接入多种网络环境下的多种不同协议的设备,例如摄像机IPC、网络硬盘录像机NVR、硬盘录像机DVR、GB/T28181国标设备、单兵设备、SIP协议设备等,这会涉及到比较多的数据传输和控制协议,例如:RTSP、RTP、Onvif、GB/T28181、SIP、国网A/B接口等,而这些传输协议的数据封装格式各种各样:ES、TS、PS,PES,我们需要做的是兼容所有的协议,对上层应用系统、用户侧提供统一的接口和兼容性强的音视频输出协议,构建一套高内聚、低耦合、易扩展、接口友好的视频能力平台,让应用系统的研发人员基于视频能力平台就可以研发出各种以视频为增值服务的应用平台!
    在这里插入图片描述

    需求分析

    传统安防结合互联网的音视频应用领域,基本上可以拆分为以下几点:

    1、协议兼容

    从设备取流与数据转发协议上,我们需要涉及到:

    • RTSP取流;
    • Onvif协议控制;
    • GB/T28181协议控制;
    • 国网A/B接口控制;
    • RTMP推流;

    2、流封装的处理

    通过取流协议获取到音视频数据后,我们需要对各种音视频数据的封装格式和编码格式进行二次处理,统一输出:

    • RTP数据解析;
    • PS数据解析;
    • RTMP/FLV数据封装;

    3、流数据的分发与存储

    流媒体服务是所有视频应用最核心的部分,主要要求能够稳定、高性能、全平台分发,并且能够提供一系列的外围管理服务,包括录像、检索、回放、鉴权等:

    • 高性能分发;
    • RTMP/HLS/HTTP-FLV同步输出;
    • 录像、检索与回放;

    4、音视频编解码

    • 视频快照;
    • G.711/G.726/PCM转码AAC;
    • 音视频的解码与播放

    解决方案

    以EasyNVR(www.easynvr.com)解决方案为例

    EasyNVR的主要建设目标是将各种各样的安防摄像机、NVR进行统一接入和管理,并控制流的按需输出,对全平台终端提供统一的标准H5流输出:
    EasyNVR
    我们在EasyNVR的设计之初就按照视频能力平台的目标去建设,连接底层各种厂家的硬件和上层各种各样的视频场景应用:
    EasyNVR
    EasyNVR技术实现采用技术流程是:

    • EasyOnvifClient进行设备的发现和设备直播流取址;
    • EasyRTSPClient进行RTSP取流;
    • 将安防类的G.711/G.726等音频格式通过EasyAACEncoder转码为AAC格式;
    • EasyRTMP对音视频流进行校正和推流到EasyDSS流媒体服务器;
    • EasyDSS流媒体服务器进行RTMP/HTTP-FLV/HLS同步输出,兼容所有终端;
    • 外围根据用户的接口请求控制拉流->推流->转发的节奏;
    • 各个流转节点同步会做一些快照、错误码的记录和对外输出;

    以自建一套流媒体系统为目标

    第一步:取流

    无论是以RTSP、Onvif协议从设备取流,还是国标GB/T28181向设备取流,都是根据设备所支持的协议,通过协议过程获取到设备回调的音视频数据,例如海康的NetSDK、国家电网视频平台A/B接口等;

    第二步:数据处理与分析

    从第一步取到音视频流后,我们需要将流统一Demux为ES流进行进一步的处理,例如海康SDK输出的大部分流为PS流,我们需要将PS解析成ES的音视频数据,再基于ES的音频、视频数据进行例如:快照、视频信息、转码、视频分析等多种操作。

    第三步:推流与分发

    在第二步进行了初步的数据处理后,我们需要将ES音视频数据通过EasyRTMP(https://github.com/EasyDSS/EasyRTMP)推送到EasyDSS(www.easydss.com)流媒体服务器进行高性能分发和存储,并提供一系列的对外管理接口;

    第四步:接口化处理

    完成了以上3步,只能算是跑通了整个数据流程,我们还需要对整个流程进行控制,例如,当有客户端请求观看的时候,我们才启动取流、转码、推流、分发的过程,当用户停止观看或者一段时间内超时未进行服务端保活,服务端即停止整个流转的过程。

    同时,我们需要将对某个设备的取流、取录像的过程均以接口的形式对外输出(参考EasyNVR的实现),这样一套底层可以提供给多个现场,多种项目使用。

    资源分享

    EasyDarwin开源流媒体服务器:www.EasyDarwin.org

    EasyDSS商用流媒体解决方案:www.EasyDSS.com

    EasyNVR无插件直播方案:www.EasyNVR.com

    EasyDarwin RTSP系列:https://github.com/EasyDarwin

    EasyDSS RTMP系列:https://github.com/EasyDSS

    关于EasyDSS

    EasyDSS(http://www.easydss.com)流媒体解决方案采用业界优秀的流媒体框架模式设计,服务运行轻量、高效、稳定、可靠、易维护,支持RTMP直播、RTMP推送、HTTP点播、HTTP-FLV直播、HLS直播,并支持关键帧缓冲,画面秒开等多种特性,能够接入Web、Android、iOS、H5、微信等全平台客户端,是移动互联网时代贴近企业点播/直播需求的一款接地气的流媒体服务器,配套OBS、EasyRTMP等直播推流工具以及EasyPlayer等网络播放器,可以形成一套完整的视频直播、录播解决方案,满足用户在各种行业场景的流媒体业务需求。

    适用场景

    EasyDSS
    EasyDSS
    EasyDSS

  • 相关阅读:
    从OpenShift SDN切换到OVNKubernetes
    OpenShift 4.10环境中的Multus静态ip
    NGINX配置显示目录文件列表
    aria2 使用openclash代理
    证书服务(五)windowsCA中心
    python操作excel
    openwrt nginx 配置PHP
    证书服务(二)加密通信的进化
    docker nginx 使用变量
    Python win32com xls文件和xlsx文件格式互相转换
  • 原文地址:https://www.cnblogs.com/babosa/p/11123987.html
Copyright © 2020-2023  润新知