分享

MPEG-2中TS码流包结构和功能应用

 SamBookshelf 2014-08-10

【摘 要】本文就有线电视数字信号TS流的形成原理和包结构的相关内容进行了论述。

【关键词】ES;MPEG-2;TS;复用/解复用技术;包结构  

一、   概述

随着有线数字电视的普及,MPEG-2系统复用技术的地位亦发凸显,根据传输媒介的质量不同,MPEG-2中定义了两种复用信息流:传输流(TS)和节目流(PS:ProgramStream)。TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度的。TS码流由于采用了固定长度的包结构,当传输误码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。而PS包由于长度是变化的,一旦某一PS包的同步信息丢失,接收机无法确定下一包的同步位置,就会造成失步,导致严重的信息丢失。因此,在信道环境较为恶劣,传输误码较高时(如:有线数字电视),一般采用TS码流;而在信道环境较好,传输误码较低时(如:家用DVD碟片),一般采用PS码流。此外,采用固定长度包格式的TS码流在将多路数据进行复用时提供了许多灵活性和一些显著的优点,譬如: a、动态带宽分配;b、可分级性;c、可扩展性;d、抗干扰性;e、接收机成本低廉。

以上的这些都让我们必须对TS流有一个更深层次了解和认识,以备能够在日后更好地解决工作、学习中遇到的问题。

二、   PES(PacketizedElementaryStream,打包基本流)及其包基本结构

在讲TS码流包结构之前,我们先来了解一下MPEG-2复用系统结构(见图1)。由系统图可见PES码流是图像和声音信号经编码后生成了各自的基本流(ES:ElementaryStream)成为TS码流环节中不可或缺的部分。

 

PES是打包的基本码流(ES流),是编码器和解码器的直接连接形式。通常PES包的长度不固定,音频PES包一般不超过64byte,而视频一般一帧一个PES包。同时在PES包中加有DTS和PTS数据。PES包经过复用再打成188 byte的固定长度包就形成TS流或TS包。PES包的结构见图2、图3。

 

 

 

PES包在理论上属传输层功能的一部分,应由复用器产生,但在实际中一般由信源编码器产生,PES包中包含码率、定时及数据描述等由编码器设置的信息。一个PES包由包起始码、PES包头和净荷组成,具体分析如下:  
  (一) PES包的包起始码
  由包起始码前缀和流标识构成。包起始码前缀是一个固定的码字结构,它的值是0×000001,用于收发两端对PES包进行同步。流标识设定了基本流类型,编码器所生成的每一个ES码流均被分配了唯一的识别标志―ID号,依据这个ID号,可对多达几十路的视频ES流和几十路音频ES流进行识别和复用,包括MPEG-2的视频流、音频流、ECM流和EMM流等等。
    (二) PES包长度
  PES包的长度是可变的。PES包长度域有两个字节,共16个比特,因此PES包的最大长度应为65535字节。这个长度值被设置为0时,表明对包的大小是没有限制或没有规定的,视频PES包属于这种类型并且是唯一类型。
    (三) PES包头
  PES包头中的功能根据特定的应用场合有所不同,包括加扰控制、优先级、ES流速率和CRC等等,其中有两个最重要的功能:
    显示时间标志PTS(PresentationTimeStamp)和解码间标志DTS(DecodingTimeStamp)。这两个功能对数字电视的解码和显示是非常重要的,PTS用于通知解码器何时显示一个已解码的图像帧,而DTS指示何时对接收到的一帧图像的编码码流进行解码。由于一个PES包对应一帧图像,因此在每个PES包中均应设定与该图像帧对应的PTS值。至于DTS,它不能独立出现,必须与PTS一起出现。DTS的值可由PTS的值得到,除非对解码过程有特殊要求,一般不设定也不传输DTS。当编码图像帧不是B帧时,也就是说不需要对编码帧顺序进行重排时,DTS值与PTS值是相同的。PTS是PES头中最重要的功能,PTS的差错将导致图像与伴音对不齐或者图象有类似丢帧现象之类的错误。

三、   TS(TransportStream,传输流)及其包的基本结构

1.传输流(TS)和TDM時隙 电视节目的制作过程中,图像和声音信号经编码后生成了各自的基本流(ES:ElementaryStream),这些ES流以及辅助数据复用在一起构成一路实际的电视节目传输流。由于一路节目的传输流的速率是与节目内容密切相关,体育节目的传输流码率要远高于采用同样编码器的新闻节目的传输流码率,因此在实际的数字电视节目传输时,会将多路节目复用在一起传输,根据节目内容动态分配其传输带宽,可以大大节省实际所需的传输带宽。上述复用有标准的复用方式和复用格式,以便在不同地区和不同厂商的设备之间建立一种统一的,开放的数字电视传输和交换标准,任何符合标准的解复用器/接收机都能够正确地分离多路节目的传输流以及每路节目内不同信息的ES流。在MPEG-2系统中,信息复用/分离的过程称为系统复用/解复用,由视频、音频的ES流和辅助数据复用生成的用于实际传输的标准信息流称为MPEG-2传输流(TS:TransportStream)。
   数字电视中的多路ES流的复用和多路节目传输流的复用均是采用数字通信系统中的时分复用―TDM方式: 图像,声音的ES流和辅助数据按所需带宽被分配到复用的高速二元数字比特流的各传输时隙中,构成一路TS流进行传输,从时间上看TS流中各路ES流是分时轮流传输的;多路节目的TS流也以同样方式复用构成更高速率的传输流。在多路数字信号间实现TDM的过程称为数字复用,逆过程称为数字解复用。
  TDM中一个比特周期称为一个传输时隙,时隙是多路信号间分配带宽的最基本单位。数字复用/解复用中的一个重要概念是“包结构”。为了使接收端的解复用器能够正确地从复用信息流中分离出各路信息,以便进行相应的解码处理,要求发送端的复用器按照规定的结构对复用信息流进行打包。所谓“打包”就是先将顺序连续传输的复用信息流按一定的时隙长度分段,每段前加入规定的同步比特信息以及描述段内信息和相关的标志比特信息,构成具有特定结构和时隙长度的传输单元,称之为“包”,然后将这些包按先后顺序组成一个连续的包序列,实际在媒体中进行传输的信息流(包括TS流)就是这种包序列。在一个包中,同步及标志信息称为“包头(Header)”,后面跟随的传输给用户的信息称为“净荷(Payload)”,包的长度一般是固定的。由于包头是由收发两端约定的,具有特定的格式,因此解复用器可以从传输信息流中找出各包头,分离各传输包,再按照规定的包结构就可以正确地分离各路复用信息。以“包”为基础对信息进行复用/解复用的方式有两种:
  第一种方式是,在包内部按照与包头间的相对时隙位置将净荷中的各时隙分配给不同路信息,每路信息所占时隙的数量由其所需的带宽决定,各包均按相同的结构分配时隙。解复用器在找到包头后,按规定的包结构从净荷的各时隙中提取不同路的信息。采用这种方式的包一般是固定长度的,目前电信的电话通信系统中采用的就是这种复用方式。
  第二种方式是将整个包的净荷都分配给某一路信息,不同路信息分配在不同的包内,用包头中的标志信息来说明包净荷中的数据属于哪一路信息,每路信息所占用的包的数量由其所需的带宽决定。解复用器在找到包头后,根据包头中的标志信息将净荷中的数据进行分类,送入相应的解码器中。采用这种方式的包可以是固定长度的,也可以是变长度的,目前分组数据通信中采用的是这种复用方式。
  MPEG-2中采用的是第二种复用方式,图像,声音和辅助数据被分配在不同的TS包内,TS包的长度为188个字节=188×8=1504个比特时隙,具体的码流、包结构如图4所示。

 

由上图可见可变长度的PES包被封装到恒定长度的TS包(4个字节TS包头和184个字节的TS净荷)中。封装的过程如下:首先PES的头(包括起始码和包头)被封装到一个TS包的净荷开始部分,少于184个字节的部分被开始的PES净荷占据;剩余的PES净荷被分成大小为184个字节的块,填充到接下来的TS包的净荷中,PES包净荷的结尾通过填充合适大小的AF来对齐,也就是说PES的头一定开始于TS包净荷的开始部分。

2、TS包的格式
   一个TS包有188个字节的固定长度,包括4个字节的包头和184个字节的净荷组成,具体分析如下:
    (1) TS包头

主要包括同步字节、传输错误指示符、负载数据单元起始指示符、传输优先级、PID、传输加扰控制、适应域控制、连续性计数器和数据字节。

同步字节为固定值(0×47),在选择其它经常出现的字段时应避免与该字段发生冲突。

传输错误指示符为一个标志位,置1时表示相关传输流包中至少有一个不可纠正的比特差错。

负载数据单元起始指示符为一个标志位,对于TS净荷中包含PES时,该标志位的意义是,1表示TS包的净荷以PES的首字节开始,有且仅有1个PES包在TS包的净荷开始,0表示该TS包的净荷不以PES开始;对于TS净荷中包含PSI时,1表示TS包的净荷以PSI段的第一个字节,反之为0。

传输优先级置1时表示PID相同的包中该包有更高的优先级。

PID为13比特,指示该包中净荷中存储的数据类型。PID为0×0000被保留用于节目相关表(PAT),PID为0×0001被保留用于条件接收表(CAT),PID为0×0002-0×001F也被保留用于PSI和SI,PID为0×1FFF被保留用于空的TS包。

传输加扰控制指出TS包的净荷的加扰方式,对空的包该字段为00,同时置为00也意味着不加扰,置为01为保留,置为10为采用偶密钥加扰,置为11为采用奇密钥加扰。对于PES包采用相同的指示。

适应域控制指TS包头后面是否有适应域。该字段置00为保留,标准解码器会丢弃该包,置为01表示没有适应域仅有有效负载,置为10表示仅有适应域没有有效负载,置为11表示跟有有效负载的适应域。如果有适应域则位于TS包净荷的开始部分。

连续性计数器为4个比特,随着每个具有相同PID值的包而递增,达到最大值回卷为0,但是当适应域控制为00和10时该字段不递增。

数据字节为来自PES或PSI和SI的连续字节的数据或填充字节,当PID为0×1FFF空包时可以是值。

(2)适应域
  适应头是一个可变长的域,它在TS包中是否存在由包头中的适应域控制来标识。当利用链接层的信息将各基本比特流提取出来后,适应域便提供基本比特流解码所需的同步及时序等功能,以及编辑节目所需的各种机制,如本地节目插入等。
  适应域的最主要功能就是视频音频编解码器的同步和节目插入的实现。
  在数字电视中,由于图象编码方式(I,B,P帧等)和图象复杂度的不同,编码后每帧图象产生的数据量是不同的(PES的长度是可变的),无法从编码比特流中直接获取帧同步信息,导致了解码与显示过程无法同步。
  为解决这一问题,每隔一定的传输时间,在经过选择的TS包的适应域中,传输系统时钟27MHz的一个抽样值给接收机,作为解码器的时钟参考信号,称为节目时钟参考(PCR:ProgramClock Reference)。PCR通常每隔100毫秒至少要被传输一次(在DVB标准中该值为40毫秒)。PCR的数值所表示的是解码器在读取完这个抽样值的最后那个字节时解码器本地时钟所应处的状态。通常情况下,PCR不直接改变解码器的本地时钟,而是作为参考基准来调整本地时钟, 使之与PCR趋于一致。
  PCR在MPEG-2系统中是非常重要的,因为解码器中的视频和音频抽样时钟都锁定于与PCR锁相的本地时钟,也就是说,视频和音频解码过程能否正常进行,首先取决于解复用器能否准确恢复PCR。但在MPEG-2标准中,仅规定了传输PCR信息格式,并未对PCR恢复的方法及过程进行规范。PCR在单路节目顺序传输时较容易处理,但在信道发生变化(如用户切换频道)时或进行多路复用解复用(包括本地节目插入)时,就需要对PCR值进行调整,这一调整过程的实现是十分复杂的。各厂商的MPEG-2系统中可能会采用各自不同的PCR算法,目前不同厂商的MPEG-2编解码器间兼容性不佳很大程度上就是由此引起的。 
  经过编码的视频音频码流具有规定的格式,尤其是视频码流中,存在着I、P、B三种编码帧类型。其中只有I帧编码数据是可以独立进行解码的,P帧和B帧数据的解码必须依赖临近的I帧或P帧解码图像。因此数字电视信号无法象模拟电视那样在任意帧处进行剪切、插入,只有在某些特定位置上,TS包中携带的数据才可以独立进行解码,才允许对节目进行调整和插入,这样的位置称为随机进入点。适应域中的随机进入指示就是表明随机进入点的位置的。当随机进入指示设置为1时,说明从 TS包开始,可对编码码流进行节目调整和切换。随机进入点与视频音频的PES包的起始保持一致,通常为I帧之前的视频序列头信息的始位置,如果为音频则为音频帧的首字节。
  在电视广播中,常需要进行本地节目和广告的插入,在MPEG-2传输系统中是使用TS包适应域中的一些标志来支持上述功能。 在进行本地节目插入时,插入节目的PCR值与插入前节目的PCR值是不同的,因此需要有指示信息通知解码器PCR值将发生变化,以便解码器够及时改变时钟频率和相位,与插入节目尽快建立同步关系。
  在适应域中,不连续指示标志就是通知解码器PCR值将从某一个TS包开始发生间断,即与前一个TS包的PCR值相比将发生变化,不再是与其连续的下一个值。至于具体从哪一个TS包开始PCR值发生变化,则依据拼接点标志和与之相应的拼接点倒计数字段共同决定。拼接点标志为1表示拼接点倒计数字段出现在相关的适应域中,拼接点倒计数字段为一个正或负的值,当该值为正值时指出跟在相关TS包后到拼接点具有相同PID的TS包的数目,当该值为0时表示该TS包的最后一个字节即为拼接点。
  显然,节目插入点必然是随机进入点,但并不是所有的随机进入点都适合作为节目插入点,主要限制在于将要插入的比特流的长度,应使节目前后缓冲的容量保持一致,同时在节目插入开始时缓冲器的容量应保证不致使解码端缓冲器出现溢出或取空。
  此外,适应域还可传输一些辅助信息:适应域长度通知解码器适应域的长度,单位是字节。只要适应域存在,就最少具有两个字节的基本长度。当适应域被扩展时,通过这个长度信息可以知道适应域扩展的长度。 OPCR标志原始节目时钟参考,用于指示单路节目在解码器中OPCR的最后一个比特的想到达时刻。这个域在传输过程中不发生变化,有助于从一个传输流重构单个节目传输流。解码器在解码过程中并不使用OPCR,任何复用器都不应该修改OPCR字段。传输专用数据标志表明在扩展适应域中是否传输专用数据。这种机制为传输条件接中的密钥提供了一种可能,当然,也可以送其它用户定义的专用数据。
  (3)净荷
  TS包中净荷所传输的信息包括两种类型:1)视频、音频的PES包以及辅助数据;2)描述节目复用信息的节目映射表(PAT: ProgramAssociateTable)以及节目映射表(PMT:ProgramMapTable)以及其它PSI的表格和SI的表格;。

TS包净荷所承载的信息中最主要的就是构成数字电视节目的各种ES流。在系统复用时,视频、音频的ES流需进行打包,形成视频、音频的 PES流,而辅助数据(如图文电视信息)不需要打成PES包。视频、音频的PES包一般是以一帧编码图像为单位生成的,因此音频PES包是恒定长度的,而视频PES包的长度是可变的。PES包的长度通常总是远大于TS包的长度,也就是说一帧图象的PES包通常要由许多个TS包来传输。MPEG-2系统层规定,一个PES包必须由整数个TS包来传输,如果承载一个PES包的最后一个TS包没能装满,则用填充字节来填满;当下一个新的PES包形成时,需用新的TS包来开始传输。
节目关联表PAT
  PAT包含了多路节目复用有关的控制信息。由于我国的模拟信号采用的标准为PAL-D/K制,它的带宽为8MHz,如果采用64QAM的传输标准,它大约可以传输38Mbps的速率,因此现在标准实际的传输频道的带宽常大于一路数字电视节目信号的带宽,为提高频道资源的利用率,需要将多路节目复用在一起后进行传输;此外,当数字电视在通信网中进行传输时,动态的多节目复用/解复用也是不可避免的。这种多路节目的复用称为系统级复用,PAT描述了系统级复用中传输每路节目PMT的码流的PID值。
  PAT作为一个独立的码流,被装载在TS包的净荷中进行传输,并且被分配了一个唯一的PID值。传输PAT的码流的PID值被定义为固定的数值“0”,即PID=0。

节目映射表PMT
  PMT表包含了与单路节目复用有关的控制信息。前面介绍过,单路节目的TS流是由具有相同时基的多路ES流复用构成的,典型的构成包括路视频ES流,几路音频ES流,以及1路或多路辅助数据,当然也可以只由上述ES流中的一种构成。在进行TS流复用时,各路ES流被分配了唯一PID,ES流与被分配的PID值间的关系构成了一张表,称为节目映射表PMT。PMT完整地描述了一路节目是由哪些ES流组成的,它们的PID分别是什么等等。
  为使解复用器能够根据PID恢复各路ES流,需要在传输节目时将PMT表传输给解复用器。在MPEG-2传输层中,它作为一个独立的码流,被加载在TS包的净荷中进行传输,并且被分配了一个唯一的PID。承载PMT的TS包有自己独特的PID=PIDn。PMT表的内容包括表标识号(table_id,以区别于PAT)、表的长度指示、所描述节目的编号(program number)、用于提供本节目收发同步参考的PCR值所在的ES流 的PID值、节目描述信息长度标识及随后的节目描述信息,还有一个或多个组成该节目的ES流描述信息,包含了该ES流的类型(如是视频、音频还是数据)提示、PID值、及具体的描述信息等。
  需要注意的是,在系统级复用器的输入端,可能有不同节目码流的PID值是相同的。由于不同码流的PID值必须是不同的,为解决这一问题, 在进行系统级复用前,须对那些相同的PID值进行修改,这些修改必须同时记录在PAT和PMT中。
  系统级复用是可分级的,如果有更宽的频带可利用,则可对更多路节目进行复用。此时只需将原系统级复用码流中的PAT取出,并重新建立新的PID=0的PAT码流即可。
  从中我们可以发现TS码流的结构具有如下显著特征: 允许单路数字电视节目可由任意组合的ES码流构成,节目可根据需要对ES码流进行增加或删除。 允许对多路节目进行灵活地复用,如果其中某些节目码流发生了变化,比如某路节目增加了ES码流,或某路节目被删除不再传输了,则只需将PAT及PMT作相应的修改并将修改通知接收机即可,而不需要对复解复用设备的硬件系统作任何修改。能够在TS级上提供本地节目插入和条件接收等对广播界非常重要的功能。
  目前,单路节目的复用解复用的实现与编解码器设备作在一起。而多路节目的复用解复用的实现于复用器作在一起。

四、结束语

数字电视已成为我国电视事业的主流,电视节目数字化、网络化促进了数字电视的发展,

TS流结构的最大优点是能够适用于不同构成的传输流,接收机只需根据PAT表、PMT表及PID即可对接收到的节目传输流进行识别、解复用和解码而无须对硬件设备做任何修改,下面我们就简要介绍以下一个单路节目TS流解复用的一般过程。
  单路节目的解复用过程可分为两个阶段:
  首先,使用PID=0的码流中的PAT表中,找出携带了PMT表的码流的PID值。在TS流中,携带PAT的码流的PID总是被设为“0”,解复用器可以直接识别,而携带PMT的码流的PID是不定的,因此解复用器需要首先从PAT中找出携带所需节目的PMT的码流的PID值。
  然后,根据上述PID值找出描述所需节目结构的PMT码流,从该PMT中就可以找出组成该路节目的各ES流的的PID值。根据这些PID值就可从TS包中将各ES流的数据解复用出来,并重新组成各ES流送给相应的解码器进行解码。

 

参考资料:

1.信息技术 运动图象及其伴音系统的通用编码 第1部分:系统

中华人民共和国国家标准 GB/T 17975.1-2000(ISO/IEC 13818-1:1996)

 

2.    桑林,郝建军,刘丹谱.数字通信[M] .北京: 北京邮电大学出版社, 2002.

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多