@@ -96,6 +96,59 @@ mvhd定义了整个movie的特性,通常包含媒体无关的信息,例如
9696** 普通MP4文件播放时,ftyp与moov box需同时加载完成后,并下载部分mdat box的帧数据后,才能开始播放** 。 那对于一些长视频,确实存在文件头过大,从而影响第一帧的加载速度问题。 另外,对于不是很规范的文件,例 ` mp4视频文件举例 ` 中moov box基本在文件最后的的MP4文件,还有可能存在视频文件基本下载完成后才能播放的问题。
9797
9898
99+ ### ES
100+
101+ ES:Elementary Streams (原始流)是直接从编码器出来的数据流,可以是编码过的视
102+ 频数据流(H.264,MJPEG 等),音频数据流(AAC、AC3、MP3),或其他编码数据流的统称。
103+ ES 流经过PES 打包器之后,被转换成PES 包。
104+
105+ ES 是只包含一种内容的数据流,如只含视频或只含音频等,打包之后的PES 也是只含
106+ 一种性质的ES,如只含视频ES 的PES,只含音频ES 的PES 等。
107+ 每个ES 都由若干个存取单元(AU: Access Unit)组成,每个视频AU 或音频AU 都是由
108+ 头部和编码数据两部分组成,1 个AU 相当于编码的1 幅视频图像或1 个音频帧,也可以说,
109+ 每个AU 实际上是编码数据流的显示单元,即相当于解码的1 幅视频图像或1 个音频帧的取
110+ 样。
111+
112+
113+ ### PES
114+ PES:Packetized Elementary Streams (分组的ES),ES 形成的分组称为PES 分组,是用
115+ 来传递ES 的一种数据结构。PES 流是ES 流经过PES 打包器处理后形成的数据流,在这个过
116+ 程中完成了将ES 流分组、打包、加入包头信息等操作(对ES 流的第一次打包)。
117+ PES 流的基本单位是PES 包。PES 包由包头和payload 组成。
118+
119+
120+ ### PTS、DTS
121+ PTS:PresentationTime Stamp(显示时间标记)表示显示单元出现在系统目标解码器
122+ (H.264、MJPEG 等)的时间。
123+ DTS:Decoding Time Stamp(解码时间标记)表示将存取单元全部字节从解码缓存器移走
124+ 的时间。
125+ PTS/DTS 是打在PES 包的包头里面的,这两个参数是解决音视频同步显示,防止解码器
126+ 输入缓存上溢或下溢的关键。每一个I(关键帧)、P(预测帧)、B(双向预测帧)帧的
127+ 包头都有一个PTS 和DTS,但PTS 与DTS 对于B 帧不一样,无需标出B 帧的DTS,对于I 帧
128+ 和P 帧,显示前一定要存储于视频解码器的重新排序缓存器中,经过延迟(重新排序)后再
129+ 显示,所以一定要分别标明PTS 和DTS。
130+
131+ ### PS
132+ PS:Program Stream(节目流)PS 流由PS 包组成,而一个PS 包又由若干个PES 包组成(到
133+ 这里,ES 经过了两层的封装)。
134+ PS 包的包头中包含了同步信息与时钟恢复信息。
135+ 一个PS 包最多可包含具有同一时钟基准的16 个视频PES 包和32 个音频PES 包。
136+
137+ ### TS
138+ TS:Transport Stream(传输流)由定长的TS 包组成(188 字节),而TS 包是对PES 包
139+ 的一个重新封装(到这里,ES 也经过了两层的封装)。PES 包的包头信息依然存在于TS 包
140+ 中。
141+
142+ TS 流与PS 流的区别在于TS 流的包结构是固定长度的,而PS 流的包结构是可变长度的。
143+ PS 包由于长度是变化的,一旦丢失某一PS 包的同步信息,接收机就会进入失步状态,从而
144+ 导致严重的信息丢失事件。
145+ 而TS 码流由于采用了固定长度的包结构,当传输误码破坏了某一TS 包的同步信息时,接
146+ 收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。因此在信
147+ 道环境较为恶劣、传输误码较高时一般采用TS 码流,而在信环境较好、传输误码较低时一般
148+ 采用PS 码流。
149+
150+
151+
99152
100153
101154
0 commit comments