需求背景

回顾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技术实现我们采用技术流程是:

  • 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

Copyright © EasyDarwin Team 2012-2018

如何基于EasyDSS体系的全套SDK完成各种场景下的视频应用需求的更多相关文章

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

    需求背景 回顾EasyDSS的发展过程,基本上保持的是先局部后系统.先组件后平台的发展方式,一步一步夯实每一个细节功能点,从最基础.最兼容的音视频数据的拉流获取,到高效的.全兼容的数据推流,再到流媒体 ...

  2. 网页视频直播、微信视频直播技术解决方案:EasyNVR与EasyDSS流媒体服务器组合之区分不同场景下的直播接入需求

    背景分析 熟悉EasyNVR产品的朋友们都知道,EasyNVR不仅可以独成体系,而且还可以跟其他系列产品相配合,形成各种不同类型的解决方案,满足各种不同应用场景的实际需求.针对很多设备现场没有固定公网 ...

  3. 网页直播、微信直播技术解决方案:EasyNVR与EasyDSS流媒体服务器组合之区分不同场景下的easynvr

    近期遇到好多客户咨询关于实现微信直播.或者是将直播页面集成进入自己项目中. 该方案的主要目的:完成在公网一直进行内网摄像头的RTMP/HLS直播! 实现方案的具体实现: EasyNVR+EasyDSS ...

  4. 基于EasyDSS流媒体RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案创建视频点播、短视频、视频资源库等视频播放系统

    需求背景 最近有很多用户咨询关于视频点播问题,主要需求集中在如何搭建属于自己的视频点播平台: 实现的功能可以大体归类为:对应自身拥有的视频文件,需要发布到一个网站,其他用户都可以实现点播观看. 针对于 ...

  5. 基于C#的钉钉SDK开发(1)--对官方SDK的重构优化

    在前段时间,接触一个很喜欢钉钉并且已在内部场景广泛使用钉钉进行工厂内部管理的客户,如钉钉考勤.日常审批.钉钉投影.钉钉门禁等等方面,才体会到原来钉钉已经已经在企业上可以用的很广泛的,因此回过头来学习研 ...

  6. 基于EasyDSS流媒体解决方案创建视频点播、短视频、视频资源库等视频播放系统

    随着前端技术的不断发展,视频点播早已不再是IE6时代的浏览器嵌入式Windows Media Player.也不是后来的flash media player需要的rtmp点播流,现在能够唯一满足全终端 ...

  7. 基于Servlet体系的HTTP请求代理转发Spring Boot组件

    背景概述 两个项目组原本都是各自负责两个产品线(产品A.产品B),由于公司业务的发展,目前需要将两个产品合并成一个大产品(功能整合,部分做取舍,最终产出产品C),前后端代码必然也需要整合,包括两个产品 ...

  8. 基于opencv网络摄像头在ubuntu下的视频获取

     基于opencv网络摄像头在ubuntu下的视频获取 1  工具 原料 平台 :UBUNTU12.04 安装库  Opencv-2.3 2  安装编译运行步骤 安装编译opencv-2.3  参 ...

  9. 尚硅谷《全套Java、Android、HTML5前端视频》

    尚硅谷<全套Java.Android.HTML5前端视频> (百万谷粉推荐:史上最牛.最适合自学的全套视频.资料及源码) [尚硅谷官网资料导航] 谷粒学院在线学习:http://www.g ...

随机推荐

  1. Vertica删除历史分区数据

    假设test用户下创建的t_jingyu表 vsql -Utest -wtestpwd create table t_jingyu( col1 int, col2 varchar, col3 time ...

  2. ASP.NET Core 介绍和项目解读

    标签: ASP.NETCore 1. 前言 2. ASP.NET Core 简介 2.1 什么是ASP.NET Core 2.2 ASP.NET Core的特点 2.3 ASP.NET Core 项目 ...

  3. HDU5898、 HDU 2089(数位DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5898 题意:很明确,找出区间[l , r]中符合连续奇数为偶数,连续偶数为奇数的个数. 思路:dp[i ...

  4. Ubuntu常用200条命令

       查看软件xxx安装内容:dpkg -L xxx 查找软件库中的软件:apt-cache search 正则表达式 查找软件库中的软件:aptitude search 软件包 查找文件属于哪个包: ...

  5. HTTP get、post请求

    Post请求: string postData = "user=123&pass=456"; // 要发放的数据 byte[] byteArray = Encoding.U ...

  6. session.createQuery()不执行和java.lang.reflect.InvocationTargetException

    今天写SSH的工程的时候,执行到一个DAO中的Query query = session.createQuery(hql)的时候,没有成功执行,直接跳到了finally,然后前台报了500和java. ...

  7. 【夯实基础】Spring在ssh中的作用

    尊重版权:http://blog.csdn.net/qjlsharp/archive/2009/03/21/4013255.aspx 写的真不错. 在SSH框假中spring充当了管理容器的角色.我们 ...

  8. SQLServer中间接实现函数索引或者Hash索引

    本文出处:http://www.cnblogs.com/wy123/p/6617700.html SQLServer中没有函数索引,在某些场景下查询的时候要根据字段的某一部分做查询或者经过某种计算之后 ...

  9. Activiti获取ProcessEngine的三种方法

    1.通过ProcessEngineConfiguration获取 package cn.lonecloud.mavenActivi; import org.activiti.engine.Proces ...

  10. CS(计算机科学)知识体

    附 录 A                   CS( 计算机科学)知识体 计算教程 2001 报告的这篇附录定义了计算机科学本科教学计划中可能讲授的知识领域.该分类方案的依据及其历史.结构和应用的其 ...