EasyDarwin云平台:EasyCamera开源摄像机接入海康威视摄像机PS流转ES流
2023-09-14 08:59:59 时间
本文转自EasyDarwin开源团队成员Alex的博客:http://blog.csdn.net/cai6811376
海康威视使用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)
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;
}
源码及视频教程
源码地址:https://github.com/EasyDarwin/EasyDarwin/tree/master/EasyCamera-HK
视频教程地址:[http://edu.csdn.net/course/detail/3029
](http://edu.csdn.net/course/detail/3029)
获取更多信息
Copyright © EasyDarwin.org 2012-2016
相关文章
- Es 集群搭建及相关配置
- 【腾讯云ES】开源可视化工具cerebro功能强化
- 【腾讯云ES】Elasticsearch Aggregations数据统计实践
- ES(ElasticSearch)数据建模最佳实践之「一对多对多关系建模」
- E往无前 | 日志成本下降25%+!腾讯云大数据ES Lucene压缩编码深度优化大揭秘
- 【ES三周年】ES6扩展运算符的应用
- 【ES三周年】ELK日志分析平台 | 记一次基于鲲鹏麒麟操作系统分析平台搭建过程
- IOS – OpenGL ES 调节图像阴影 GPUImageHighlightShadowFilter
- IOS – OpenGL ES 图像晕影移动 GPUImageVignetteFilter
- 【ES三周年】elasticsearch目录及配置参数说明
- 【ES三周年】Elasticsearch索引策略优化:NRT和Bulk Indexing的比较及实现
- ES与MySQL:混合技术的优势(es和mysql)
- ES与MySQL的完美同步解决方案(es同步mysql)
- Mongodb与ES组合,实现数据存储和搜索的双重效益(mongodb和es)
- 实现跨越时效的大数据分析ES与Redis的实际应用(真实应用es和redis)
- 深入比较ES数据库与Oracle数据库(es数据库和oracle)
- 借助ES搜索Oracle数据库轻松获取信息(es搜索oracle)
- 借助ES技术可靠地迁移数据至Oracle(es 数据到oracle)
- 比较ES与Oracle数据库异同与选择(es和oracle数据库)
- 数据存储看您选择ES还是Redis(数据存es还是redis)