扩展ps流增加“视频帧录像时刻绝对时间戳”方法
缘起:使用GB28181对接下级平台/NVR等时,做录像回放想将录像流的时间轴精确到秒,就是实现类似下面的效果:
然而ps流中PES包携带的PTS/DTS无法转换成 【2020-06-16 00:16:43】 这样的绝对时间,因此就无法通过国标PS流进行精准定位。因此,作为上级国标平台欲想实现上图的效果,要么使用存储设备私有SDK来请流,要么就要扩展PS流增加时间戳。我们采用了以扩展PS为首选、调用SDK为辅助的思路。
实现:实现扩展PS流,增加私有数据或自定义数据,标准的办法包括两种:其一是增加一种PES来承载视音频流的非标准信息;其二是在PES包中通过增加特定数据来实现。如下所示:
(方法1)增加一种ES和相应的PES,简称时间戳PES。
这种ES表示视频帧录像时刻绝对时间戳。
单位为秒或毫秒。在PSM中协商使用哪种单位。
以32位整型的秒数或64位整型的毫秒数表示时间。
每个视频帧PES必须后面跟着一个时间戳PES。对音频帧不做要求。
(方法2)使用PES保留的extend字段。
在每个视频帧PES的extend字段上携带像时刻绝对时间戳。
单位为秒或毫秒。在PES的extend字段中协商使用哪种单位。
以32位整型的秒数或64位整型的毫秒数表示时间。
录像的音频PES可不必携带此字段。
(方法3)使用 stream_id=private_stream_1时的PES_packet_data_byte 承载专用数据。
(方法4)使用 stream_id=private_stream_2时的PES_packet_data_byte 承载专用数据。
具体的,可以参考ISO/IEC 13818-1的附录H来获得更多详细实现细节。经过评估,我选择了(方法2)作为最终实现方法。实现细节如下:
扩展ps流增加“视频帧录像时刻绝对时间戳”方法相关推荐
- QT界面中实现视频帧显示的多种方法及应用
QT界面中实现视频帧显示的多种方法及应用 (一) 引言 1.1 视频帧在QT界面中的应用场景 1.2 不同方法的性能和适用性分析 1.2.1 使用QLabel和QPixmap 1.2.2 使用QPai ...
- 模糊视频帧插值:CVPR2020论文点评
模糊视频帧插值:CVPR2020论文点评 Blurry Video Frame Interpolation 论文链接:https://arxiv.org/pdf/2002.12259.pdf 摘要 现 ...
- 音视频学习(十)——ps流
1. 简介 PS的封装格式需要支持MPEG2/MPEG4/H.264等视频和MPEG系列的音频,支持在多个层次加入私有数据,方便解码.拖动和加入延时,同时考虑到标准的PS.TS 和 RTP 封装方式间 ...
- 最简单的GB28181视频PS流播放器。
一 从PS流中提取h264和aac. 移步:https://blog.csdn.net/qq_39805297/article/details/107083322 二 基于ffmpeg解码h264获取 ...
- 视频知识基础:什么是TS、PS流?
在MPEG-2系统中,信息复合/分离的过程称为系统复接/分接,由视频,音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送流(TS:TransportStream). 据传输媒 ...
- 海康威视实时预览回调PS流用EasyRTMP向RTMP服务器推流中视频数据处理的代码
在上一篇方案<EasyRTMP结合海康HCNetSDK获取海康摄像机H.264实时流并转化成为RTMP直播推流(附源码)>我们介绍了将海康安防摄像机进行互联网直播的整体方案流程,其中有一个 ...
- 视频知识基础:什么是TS、PS流? .
在MPEG-2系统中,信息复合/分离的过程称为系统复接/分接,由视频,音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送流(TS:TransportStream). 据传输媒 ...
- spring boot 使用javaCV的FFmpeg帧捕捉器捕捉流的音频与视频帧来实现视频流下载保存
spring boot 使用javaCV的FFmpeg帧捕捉器捕捉流的音频与视频帧来实现视频流下载保存 实现图解: 一.引入maven jar包 <dependency><group ...
- EasyRTMP:RTMP推流海康威视实时预览回调PS流用EasyRTMP向RTMP服务器推流中视频数据处理的代码
在上一篇方案<EasyRTMP结合海康HCNetSDK获取海康摄像机H.264实时流并转化成为RTMP直播推流(附源码)>中我们介绍了将海康安防摄像机进行互联网直播的整体方案流程,其中有一 ...
最新文章
- Linux Kernel 5.10 aarch64体系对TTBR寄存器的设置
- springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException:
- Python之数据加密与解密(hashlib、hmac、random、base64、pycrypto)--转载
- [列联相关] 列联系数计算及假设检验
- 即插即用,运维工程师必会正则表达式大全
- cocos2d cocostudio
- 如何区分abcd类地址_ip地址abc类怎么区分
- QT cmd强制删除文件
- JS中的window对象和document对象是什么?有什么区别?
- 【学习记录】基于知识图谱的虚假新闻检测
- 如果我们能正确测本因子
- siggraph_Siggraph的统一性
- 使用Excel和Matlab批量修改图片名称
- 给Unity开发者的C#内存管理(第一部分) C# Memory Management for Unity Developers (part 1 of 3)
- 上海居住证积分办理攻略,太容易了,快来收藏!!!
- knif4j 访问不了
- Android pins 模块化架构gradle配置
- 贵大计算机学院张达敏,贵大计算机研究生怎么样?
- java实现的三阶贝塞尔曲线_n 阶贝塞尔曲线计算公式实现
- ispring sdk 8.7 Crack ispring sdk 9.7