海康威视使用PS流封装H.264流,EasyDarwin云平台支持ES流。当我们需要接入海康的视频时,我们就需要将海康的PS流转换为ES流。 
首先,我们要知道什么PS流,ES流。

ES流(Elementary Stream): 也叫基本码流,包含视频、音频或数据的连续码流。

PS流(Packet Elementary Stream): 也叫打包的基本码流, 是将基本的码流ES流根据需要分成长度不等的数据包, 并加上包头就形成了打包的基本码流PS流。

TS流(Transport Stream): 也叫传输流, 是由固定长度为188字节的包组成, 含有独立时基的一个或多个program, 一个program又可以包含多个视频、音频、和文字信息的ES流; 每个ES流会有不同的PID标示. 而又为了可以分析这些ES流, TS有一些固定的PID用来间隔发送program和ES流信息的表格: PAT和PMT表。

关于PS流的格式解析,大家可以参照 PS流的格式和解析总结

那我们如何将PS流转换为ES流呢?(这里要感谢EasyDarwin团队的Sword)

源码地址:https://github.com/EasyDarwin/EasyDarwin/tree/easycamera/EasyCamera-HK

视频教程地址:http://edu.csdn.net/course/detail/3029

bool GetH246FromPS(IN BYTE* pBuffer, IN int nBufLenth, BYTE** pH264, int& nH264Lenth, BOOL& bVideo)
{if (!pBuffer || nBufLenth <= 0){return FALSE;}BYTE* pH264Buffer = NULL;int nHerderLen = 0;if (pBuffer&& pBuffer[0] == 0x00&& pBuffer[1] == 0x00&& pBuffer[2] == 0x01&& pBuffer[3] == 0xE0)//E==视频数据(此处E0标识为视频){bVideo = TRUE;nHerderLen = 9 + (int)pBuffer[8];//9个为固定的数据包头长度,pBuffer[8]为填充头部分的长度pH264Buffer = pBuffer + nHerderLen;if (*pH264 == NULL){*pH264 = new BYTE[nBufLenth];}if (*pH264&&pH264Buffer && (nBufLenth - nHerderLen)>0){memcpy(*pH264, pH264Buffer, (nBufLenth - nHerderLen));}nH264Lenth = nBufLenth - nHerderLen;return TRUE;}else if (pBuffer&& pBuffer[0] == 0x00&& pBuffer[1] == 0x00&& pBuffer[2] == 0x01&& pBuffer[3] == 0xC0) //C==音频数据?{*pH264 = NULL;nH264Lenth = 0;bVideo = FALSE;}else if (pBuffer&& pBuffer[0] == 0x00&& pBuffer[1] == 0x00&& pBuffer[2] == 0x01&& pBuffer[3] == 0xBA)//视频流数据包 包头{bVideo = TRUE;*pH264 = NULL;nH264Lenth = 0;return FALSE;}return FALSE;
}

EasyCamera开源摄像机接入海康威视摄像机PS流转ES流相关推荐

  1. ESP32 Arduino http协议digest认证 接入海康威视摄像机

    注意:使用的是ArduinoHttpClient,与ESP32内部的HTTPClient库有较大的差别 海康摄像机http接入时候,由于没有认证信息,会返回401无权限信息,这时需要进行digest认 ...

  2. 海康威视摄像头安装插件检测不到_海康威视摄像机常见问题解答

    海康威视摄像机常见问题解答 1.忘记摄像机IP地址怎么办? ①可以通过设备网络搜索工具SADP在线搜索 ②可以使用客户端4200在线搜索功能 ③在设备和PC开启UPNP功能时,可以通过PC中网络发现查 ...

  3. 如何网页访问摄像机?海康威视官方文档

    如何网页访问摄像机?海康威视  网页访问设备预览失败 ------------------------------------------------------------

  4. 由于严重缺陷,海康威视摄像机可能被远程黑客攻击

    一个被跟踪为 CVE-2021-36260 的关键问题影响了 70 多个海康威视设备模型,并且可能允许攻击者接管它们. 一个跟踪为 CVE-2021-36260 的严重漏洞影响了 70 多个海康威视摄 ...

  5. 虹科案例|安全性防护平台-海康威视摄像机中的重大漏洞

    前言 我们Vdoo的安全研究团队对领先的物联网产品和安全设备进行了大规模的安全研究,为了提高效率和透明度,此过程设备供应商也参与其中. 这项研究的一部分是研究人员在多家供应商的设备中发现了零日漏洞.这 ...

  6. 海康威视摄像机SDK二次开发--提取音频保存至文件

    由于最近在开发海康威视摄像头,特此记录一下如何提取音频数据,这里主要依靠语音对讲返回的音频数据,通过回调函数写入文件中,加个WAV头即可播放,编码格式可以自己设置在代码中有注释 文件结构 其中Came ...

  7. 海康威视摄像机通过SDK实现自动拍照(二)

    尊敬的读者您好:笔者很高兴自己的文章能被阅读,但原创与编辑均不易,所以转载请必须注明本文出处并附上本文地址超链接以及博主博客地址:https://blog.csdn.net/vensmallzeng. ...

  8. 海康威视摄像机通过SDK实现自动拍照(一)

    尊敬的读者您好:笔者很高兴自己的文章能被阅读,但原创与编辑均不易,所以转载请必须注明本文出处并附上本文地址超链接以及博主博客地址:https://blog.csdn.net/vensmallzeng. ...

  9. 如何访问海康威视摄像机的后台

    1.首先打开海康威视网络摄像头的web管理页面,点击输入用户名密码进行登录.2.然后在弹出来的界面中,点击打开配等我继续说如何访问海康威视摄像机的后台. -- 必须修改的三个参数分别是:appkey, ...

  10. 海康威视摄像机Java SDK拉流(二)开启关闭实时预览

    上一篇:海康威视Java SDK拉流(一)初始化SDK 本篇介绍海康威视摄像机通过SDK开启关闭实时预览接口 下篇介绍实时预览的回调函数及解码库 测试环境: 系统:Centos 7 SDK:设备网络S ...

最新文章

  1. 64位CentOs7源码安装mysql-5.6.35过程分享
  2. 1130-host ... is not allowed to connect to this MySql server登录失败
  3. C# 中对象与JSON字符串相互转换的三种方法
  4. 获取当前日期0点及23点59的时间戳
  5. 你所不知道的mybatis居然也有拦截器
  6. 物联网大变局:LoRa 正式获批!
  7. [翻译]RoboChamps城市挑战赛
  8. 机器学习基础(六十一)—— 范数及范数的微分
  9. 丢人丢到国外去了,国内定制版Flash被国外安全厂商撕开了面纱!
  10. ubuntu文件右下角有锁的图标
  11. Atitit.异步编程 java .net php python js 的比较
  12. 新手程序员必学的代码编程技巧
  13. vmrc必须从URL启动该应用程序
  14. 【黑马程序员数据库】数据库基础大总结
  15. linux 图片浏览软件,FocusOn Image Viewer
  16. 最新的ARM-GCC下载安装指南
  17. 谷歌浏览器 js 获取 汉字 乱码
  18. 麦克风阵列入门(一)
  19. Docker-1 Docker简介,CentOS8安装Docker-ce,配置镜像加速器
  20. Java服务端和客户端开发辅助工具Utils

热门文章

  1. 华为重启交换机命令_华为交换机常用命令
  2. 机器学习识别图片的基本原理
  3. android apk自动安装包下载,Android 实现apk文件下载并自动安装
  4. COMSOL仿真分析视频教程
  5. 蓝牙协议分析工具Wireshark/Frontline/Ellisys的使用
  6. mysql pxc 安装_MYSQL PXC 集群安装
  7. 网上邻居的计算机用户名与密码是什么,访问网上邻居需要用户名和密码解决办法...
  8. 文本表示与文本特征提取的区别
  9. linux tftp 下载命令,Linux tftp命令
  10. tornado程序中出现ValueError: invalid literal for int() with base 16: ‘