掌握知识目标:
- FFmpeg库的使用
- 我也不知道该怎么描述遇到的问题了,反正,一堆,自己来
下面更改以往两个文章的格式吧,本文以问题为主导,也就是主题形式体现问题及其解决方法
ES、PES、TS流解析
解释:使用H.264 AVC视频编码和AAC音频编码后,打算封装为FLV格式,然后使用RTMP推流出去。这需要对码流(NALU数据包)进行打时间戳。对应原理是:MPEG-2里面的多路复用
链接:
关于ES、PES、PS以及TS码流(306doc, 小白文),
链接 大量讲述基本概念
H264 ES PS TS 流的区别(CSDN,重量级解析文 ),
链接 TS流解析过程
《基于Hi3515的视频传输终端的设计与实现_吴光辉》论文,TS包格式
PTS/DTS时间戳问题(音视频同步问题)
解析:
- PTS 表明显示单元出现在系统目标解码器( STD- System Target Decoder )的时间
- DTS 表明将存取单元全部字节从 STD 的 ES 解码缓存器移走的时刻
- 在 ES 层,与同步有关的主要是视频缓冲验证 VBV ( Video Buffer Verifier ),用以防止解码器的缓冲器出现上溢或下溢;
- 在 PES 层,主要是在 PES 头信息里出现的显示时间标签 PTS ( Presentation Time Stamp )和解码时间标签 DTS ( Decoding Time Stamp );
- 在 TS 层中, TS 头信息包含了节目时钟参考 PCR ( Program Clock Reference ),用于恢复出与编码端一致的系统时序时钟 STC ( System Time Clock )。
参考:
- 《一代高效视频编码H.265/HEVC:原理、标准与实现》9
- 《电视原理》8.7.5 8.8
链接:
H264 ES PS TS 流的区别(CSDN),
链接 PCR作用,帧重排过程(根据PTS/DTS),PTS>DTS的成因
《基于Hi3515的视频传输终端的设计与实现_吴光辉》论文,计算方式和简短原理解析,PCR作用
雷霄骅-最简单的基于FFmpeg的推流器(以推送RTMP为例),
链接 代码的形式提供计算方式