最近一家深耕于南方电网的科技公司同事找到我们,咨询关于调用海康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. Java中装箱和拆箱的代码

    建议使用1.5或以上的jdk运行, //装箱  值类型到引用类型  int i = 10;  Object object =i;  System.out.println(object);      / ...

  2. .net web api 返回的是xml

    var result = new HttpResponseMessage { Content = new StringContent(JsonConvert.SerializeObject(dto2) ...

  3. keepalived 的 vrrp_script

    [root@centos01 keepalived]# cat check_httpd.sh 脚本需要有执行权限 通常情况下,利用keepalived做热备,其中一台设置为master,一台设置为ba ...

  4. grep命令选项

    -c:只输出匹配行的计数. -I:不区分大 小写(只适用于单字符). -h:查询多文件时不显示文件名. -l:查询多文件时只输出包含匹配字符的文件名. -n:显示匹配行及 行号. -s:不显示不存在或 ...

  5. git 在 A 项目中引用 B 项目

    git 在 A 项目中引用 B 项目   场景: 需要在项目calcDLL(http://XXX/XXXA.git) 中 引用 项目libindex(http://XXX/XXXB.git). 解决方 ...

  6. easyui增删改查

    easyui的crud(dialog,datagrid.form讲解)1.datagrid布局2.dialog布局3.form布局4.通用的JsonBaseDao增删改方法5.dao层6.web层7. ...

  7. IntelliJ IDEA 2017 JDK Tomcat Maven 配置步骤详解(一)

    要求   配置 Java基础环境(实际上应该在虚拟机linux环境下 安装CentOS 7,但是我这电脑实在承受不住了) 安装 开发工具 IntelliJ IDEA 2017.1 第一部分: JDK ...

  8. 面对对大体量矢量数据ArcGIS的优化方法

    大数据量矢量数据的可视化需要解决的问题,就是如何在可接受的短时间内,能展示大数据量的矢量地图. 解决方案一:采用预先渲染的切片进行展示 切片是预先渲染的数据集,也是响应最快的展示方式.目前ArcGIS ...

  9. 【知识点】同样是消息队列,Kafka凭什么速度那么快?

    同样是消息队列,Kafka凭什么速度那么快? 作者 | MrZhangxd Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafk ...

  10. arts打开第11周

    给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: "A man, a plan, a c ...