最近一家深耕于南方电网的科技公司同事找到我们,咨询关于调用海康HCNetSDK取流,并进行互联网转化的方案,经过反复的沟通以及自身在EasyDSSEasyNVR方面的经验,我们推荐了海康HCNetSDK+EasyRTMP推流到RTMP流媒体服务器,再由RTMP流媒体服务器同步输出RTMP/HTTP-FLV/HLS的方案。

一般情况下我们在对接一款设备,进行流处理和流转的大概流程分为:

  • 第一步:设备对接协议的选择

无论是以RTSP、Onvif协议从设备取流,还是国标GB/T28181向设备取流,都是根据设备所支持的协议,通过协议过程获取到设备回调的音视频数据,例如这里要说的海康HCNetSDK;

在取流协议的选择上,就看自身的应用需求,比如您的设备只有海康的,那么您完全可以用海康的SDK来取流,但是如果您的设备是各种厂家都有,而且不固定,建议采用的是RTSP这种国际标准的取流方式。

海康HCNetSDK是一套完全可以兼容海康几乎全部的IPC、DVR、NVR、NVS的客户端SDK,当现实场景中会不定存在很多款的设备型号,而且输出协议不一样,那么,海康的设备选择HCNetSDK是一个极佳的选择,因为海康已经将所有底层的兼容工作在HCNetSDK中完成了;

那么,以RTSP取流为例,我们在开源或者商用领域有很多可选的,比如ffmpeg、live555和EasyRTSPClient(https://github.com/EasyDSS/easyRTSPClient);

  • 第二步:数据处理与分析

从第一步取到音视频流后,我们需要将流统一Demux为ES流进行进一步的处理,例如海康SDK输出的大部分流为PS流,我们需要将PS解析成ES的音视频数据,再基于ES的音频、视频数据进行例如:快照、视频信息、转码、视频分析等多种操作。这里关于海康PS流的Demux操作以及相关的代码,我们会在下一篇博客中专门进行讨论。

  • 第三步:推流与分发

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

  • 第四步:接口化处理

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

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



为了帮助用户能够更好、更快地进行海康设备RTMP推流功能的开发,我们调试了一套示例代码:https://github.com/EasyDSS/EasyRTMP/tree/master/EasyRTMP_HIK ,功能流程非常简单,通过调用海康的HCNetSDK取流,再经过PS的Demux处理,转换成为ES流,再经由EasyRTMP推流到RTMP流媒体服务器或者CDN,实现安防互联网直播。

本文涉及的相关资源:

live555:www.live555.com

ffmpeg:http://www.ffmpeg.org/

HCNetSDK:https://www.hikvision.com/cn/download_61.html

EasyDSS:www.easydss.com

EasyRTMP:https://github.com/EasyDSS/EasyRTMP

示例代码:https://github.com/EasyDSS/EasyRTMP/tree/master/EasyRTMP_HIK

EasyRTMP结合海康HCNetSDK获取海康摄像机H.264实时流并转化成为RTMP直播推流(附源码)的更多相关文章

  1. EasyRTMP+EasyRTSPClient实现的多路(支持断线重连)RTSP转RTMP直播推流工具

    本文转自EasyDarwin开源团队成员Kim的博客:http://blog.csdn.net/jinlong0603/article/details/73441405 介绍 EasyRTMP是Eas ...

  2. Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)

    http://blog.csdn.net/yanzi1225627/article/details/22222735 如前文所示的TCP局域网传送东西,除了对传输层的TCP/UDP支持良好外,Andr ...

  3. 【转】百度API获取城市名地名(附源码)

    在做一个软件时,用到了定位功能.网上有很多关于google 的GPS定位,但网上关于google定位都没有用, 搜索下原因:(这里建议大家在中国就尽量不使用系统自带的定位) 因为Google的服务器不 ...

  4. Android 音视频深入 十七 FFmpeg 获取RTMP流保存为flv (附源码下载)

    项目地址https://github.com/979451341/RtmpSave 这个项目主要代码我是从雷神那弄过来的,不愧是雷神,我就配个环境搞个界面就可以用代码了. 这一次说的是将RTMP流媒体 ...

  5. 海康威视实时预览回调PS流用EasyRTMP向RTMP服务器推流中视频数据处理的代码

    在上一篇方案<EasyRTMP结合海康HCNetSDK获取海康摄像机H.264实时流并转化成为RTMP直播推流(附源码)>我们介绍了将海康安防摄像机进行互联网直播的整体方案流程,其中有一个 ...

  6. 鸿蒙内核源码分析(中断概念篇) | 海公公的日常工作 | 百篇博客分析OpenHarmony源码 | v43.02

    百篇博客系列篇.本篇为: v43.xx 鸿蒙内核源码分析(中断概念篇) | 海公公的日常工作 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在哪里 ...

  7. 将海康大华等网络摄像机RTSP流进行网页Flash rtmp和H5 hls直播的技术方案

    前言 再小的技术点也会有他的市场! 一直以来,都有一些不被看好,认为是成本太高,无法大规模展开的软件和产品形态,就好比每一座城市都会有他的著名小吃一样,即使是慕名而来的人源源不断,受众群体也总是有限, ...

  8. 曹工说Spring Boot源码(23)-- ASM又立功了,Spring原来是这么递归获取注解的元注解的

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  9. Java并发包源码学习系列:CLH同步队列及同步资源获取与释放

    目录 本篇学习目标 CLH队列的结构 资源获取 入队Node addWaiter(Node mode) 不断尝试Node enq(final Node node) boolean acquireQue ...

随机推荐

  1. 使用Navicat Premium 12导出SQL语句并在Power Designer 16.5中生成物理模型

    内容简介 本文主要介绍使用Navicat Premium 12导出建表SQL(使用MySQL数据库)文件,并在Power Designer 16.5中使用导出的SQL文件来生成物理模型的步骤. 操作步 ...

  2. LightOJ - 1102 - Problem Makes Problem(组合数)

    链接: https://vjudge.net/problem/LightOJ-1102 题意: As I am fond of making easier problems, I discovered ...

  3. cube.js 学习(六)cube.js segments 说明

    segments 是你需要查询的数据的子集,实际上filter 也可以做类似的事情,但是,目前这个设计估计是为了更好的数据 查询吧,同时在操作界面上我们也可以看出来 参考格式 segments: { ...

  4. 《挑战30天C++入门极限》C/C++中字符串常量的不相等性及字符串的Copy

        C/C++中字符串常量的不相等性及字符串的Copy #include <iostream>    void main(void)  {      if("test&quo ...

  5. bee api new

    bee api appcode -conn="root:root@tcp(127.0.0.1:3306)/test"

  6. vue-cli3配置多页面入口

    假如要单独将登陆页面当成一个项目入口文件: 第一步:创建一个登陆页面的文件 在项目public文件夹下创建一个login.html,其实就是将index.html复制一份,将title改一下: 第二步 ...

  7. TCP的几个知识点

    1. 三次握手.四次挥手 详细查看:https://www.cnblogs.com/amiezhang/p/6703390.html 2. ARQ 协议 ARQ 就是超时重传机制,分为 2 种:停止等 ...

  8. Django REST framework优点?

    1.提供了定义序列化器Serializer的方法,可以快速根据Django ORM 或者其他库自动序列化/反序列化2.提供了丰富的类视图\MIXIN扩展类,简化视图的编写3.丰富的定制层级:函数视图\ ...

  9. datagrid其中某列需要动态隐藏或显示的mvvm绑定方式,也可以用在其他表格类型控件上

    版权归原作者所有. 引用地址 [WPF] HOW TO BIND TO DATA WHEN THE DATACONTEXT IS NOT INHERITED MARCH 21, 2011 THOMAS ...

  10. Linux----添加zabbix-agent

    1.zabbxi-agent安装及配置 1.1 获取官方zabbix源 [root@localhost ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/r ...