多媒体文件格式(四):TS 格式 (2)

多媒体文件格式(四):TS 格式

从上面的结构图可以看出,PES层是在每一个视频/音频帧上加入了时间戳等信息,PES包内容很多,下面我们说明一下最常用的字段:

pes start code:开始码,固定为0x000001。

stream id:音频取值(0xc0-0xdf),通常为0xc0;视频取值(0xe0-0xef),通常为0xe0。

pes packet length:后面pes数据的长度,0表示长度不限制,只有视频数据长度会超过0xffff。

pes data length:后面数据的长度,取值5或10。

pts:33bit值

dts:33bit值

关于时间戳PTS和DTS的说明:

PTS是显示时间戳、DTS是解码时间戳。

视频数据两种时间戳都需要,音频数据的PTS和DTS相同,所以只需要PTS。

有PTS和DTS两种时间戳是B帧引起的,I帧和P帧的PTS等于DTS。如果一个视频没有B帧,则PTS永远和DTS相同。

从文件中顺序读取视频帧,取出的帧顺序和DTS顺序相同。DTS算法比较简单,初始值 + 增量即可,PTS计算比较复杂,需要在DTS的基础上加偏移量。

音频的PES中只有PTS(同DTS),视频的I、P帧两种时间戳都要有,视频B帧只要PTS(同DTS)。

2. ES 层

ES层指的就是音视频数据。

一般的,视频为H.264视频,音频为AAC音频。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydpdp.html