分类:
2009-02-05 15:02:58
I
系统
I-0
系统引言
1. 传输流和程序流(Transport stream, program
stream)
element stream指的是单一的音视频内容流,一个视频或者一个音频流,或者数据。这些数据被13818-2和13818-3所描述的音视频编码进行压缩后,被打包成pes
packets。
传输流是用来面向容易出错的环境,如传输广播环境而使用的,程序流失面向错误较少的环境如存储,软件处理等,所以他的包的长度可以很长,可以变化,我们不担心会出错。而传输流的包的长度就会很短188字节。
不管是传输流还是程序流都要使用包含节目音视频的PES流。
video, audio等element stream打包后的pes流可以被复用到一个program
stream里面,也可以分别把他们弄到单独的program stream里面,只不过他们要有相同的时间控制来同步。
传输流和程序流之间不是包集关系,也不是分层关系,它们是可以相互转换的,依据PES流这个桥梁。
传输流分两个layer,一个是system layer,一个是compression
layer,system layer又分为两个sub layer,一个是transport stream packet构成的曾,一个是PES packet构成的层。而compression
layer可以认为是被压缩编码的音视频数据。同样,program stream也是这样的分层,只不过他的system layer里面的一个sub layer是program
stream pcket,而不是transport stream packet.
传输流的码率是由PCR的位置和数值确定的,而程序流的码率是由SCR的位置和数值以及mux_rate域确定的。
2. PES 流
pes packet构成的流是将一个element stream打包后构成的,它是一种逻辑的结构,它一般不用来作为交互使用,所以它一般作为一种中间结构。最终还是要被封装成program
stream或者transport stream. PES流中理应包含element stream closk reference即ESCR以及elementary
stream rate即ES_Rate域。pes stream里面也包含了用来进行时间同步以及描述码率的成员。
3.timing model
最终是要保证decoder端对视频的frame之间的interval以及音品的采样速率要与encoder端保持一致。
要有一个
4.同步
我们可以认为一个节目的多个elementary stream(每个对应一个pes
stream)的同步方法为:找一个clock reference作为base, 然后各个pes stream都携带一个PTS 来表示每个pes stream的presentation
time stamp.
对于program stream来说,使用SCR(system clock
reference)来作为clock reference,对于transport stream 来说,是用PCR(program clock
reference)来作为参考。即一个program的参考。每个单独的pes stream携带各自的基于该参考的PTS来描述各自的时间同步控制内容。这就是PCR和PTS的关系,一个是多个elementary
stream公用的基础clock reference,一个是各个elementary stream的相对时间控制信息。pes stream header里面带的pts时间,就是pes
packet里面的payload应该被present的时间。
PTS的单位是90hz,而PCR,SCR,ESCR含有27Mhz的extension.
5.applications
program stream可以用于存储,数据网络中的传输。