将具有共同时间基准或具有独立时间基准的一个或多个PES组合而成的单一的用于传输的数据流称为传输流(Transport Stream,TS)。
TS包的长度是固定的188B。TS包由包头(Header)和净荷(Payload)两部分组成。在TS流中,所有PES包的数据包括包头都作为TS包的净荷数据。每个TS包必须只包括来自同一个PES包的数据,一个新的PES包数据总是开始于一个新的TS包,PES包头必须跟在TS包头后面。对于一个特定的PES包,最后一个TS包可以包含填充字段以确保TS包长为固定的188B。由于TS包的长度是固定的188B,所以在TS中,如果因为误码或数据丢失导致从某一TS包的同步丢失,则接收端通过在固定的位置检测它后面的包中的同步字节,仍可以很容易地恢复同步。而在PS中就不可以恢复同步,这是由于每个PES包的长度不同,一旦出现失步,接收机就不知道下一同步字的准确位置,从而无法快速恢复同步,这有可能导致严重的后果。
TS包的包头包括4B固定长度的基本信息和可变长的适配字段。考虑到加密是按照8B顺序加扰的,则适配字段和TS包净荷数据的总长度应该是8B的整数倍,取23×8B=184B。
TS包头信息对接收端解复用、信息重组与恢复至关重要,其作用如下。
(1)包同步
TS包以8bit同步字节(sync_byte)开始,其值固定为01000111(0x47),用于建立包的同步。
(2)数据包标识
包之所以能被复用和解复用,就是靠特定的基本流(ES)和控制码流的标识符(PID)来实现的。PID是区分码流信息性质的关键,不同的电视节目和业务信息对应有不同的PID值。对于一台解码接收机而言,为了找到它所要接收的电视节目,它首先通过PID值找到节目特定信息(PSI)与业务信息(SI)所对应的不同表,这些表包括PAT、PMT、CAT、NIT、SDT、EIT及TDT等,通过这些与节目相关的信息表,尤其是节目特定信息表,可以查到所要接收节目的PID值和对应的时钟PCR,这样节目就可以被还原。由于PID在TS包头的位置是固定的,要提取某个基本流的包很容易,只要同步建立后根据PID滤出这个包即可。
(3)传输差错处理
发送端将TS包的净荷数据编号,对应的连续计数器(continuity_counter)值自0至15重复计数,而这些TS包的PID值都相同。接收端,在正常条件下,若收到的同一PID对应的TS包的continuity_counter值不连续,说明在传输过程中出现数据丢失。传送层探测到这种数据丢失后立即通知解码器。由于某些信息对于系统的平滑和连续操作是非常重要的,如TS包头的适配字段、时间片和节目映射,传送子系统为增加信息传输的健壮性,在编码器中增加了复制数据包的功能。这些数据包所包括的信息应当可以在编码器中被复制。编码器在原始数据包出现错误或丢失的情况下就使用这些复制数据包。对这些复制数据包的识别则根据continuity_counter字段来实现。
(4)条件接收
数字电视条件接收系统的安全性必须得到充分保证,一般在传输之前对解扰密钥加密,并对密钥频繁更新。密钥必须在限定的时间间隙内发送给解码器。TS流的一些位置可用于插入“私有”数据(如密钥)。在TS包头中有个2bit的传输加扰控制(transport_scrambling_control)位,这为数字电视的条件接收创造了条件,这个字段在MPEG-2中没有完全定义,在DVB的标准中作了如下规定:加扰控制位为00表示TS包的净荷数据未加扰;为01表示保留,以备将来使用;为10表示使用偶密钥加扰;为11表示使用奇密钥加扰。
一般当码流被加扰时,解码器需要一个控制字来解扰,同时还需要解出下一个控制字。这就是说,每个解码器在每个时间间隙中必须完成两个任务:第一是根据当前所拥有的控制字对码流进行解扰,得到可供MPEG解码器解码的视音频码流;第二是对授权控制消息(ECM)进行解密,解得下一个时隙所用的控制字,为下一阶段的解扰做好准备。因此为了正确安排好次序,使控制字和需要用它解扰的码流时间一致,应将两个顺序的控制字定义为奇密钥和偶密钥。
(5)同步和定时
解码和节目显示的同步操作是数字电视系统实时数据传送的一个重要特点。由于接收机对数据的处理按照一定速率进行(必须与码流的生成和传输匹配),若同步信息丢失,会导致解码器端的缓存上溢或下溢,结果导致音视频同步显示信息的丢失。这种问题的处理与模拟电视系统不同。在模拟电视系统中,针对某一图像的信息是以同步的方式传输的,这样接收机可以直接从图像同步信号中获取时钟。在数字化压缩系统中,不同图像对应的数据量是可变的,它由图像编码方式和复杂度决定,因而无法从图像数据的开始位置直接获取定时信息。(www.xing528.com)
为解决这一问题,每隔一定的传输时间,在经过选择的TS包的适配字段中,就将系统参考时钟27MHz的一个采样值传输给接收机,作为解码器的时钟基准信号,称为节目时钟基准(Program Clock Reference,PCR)。PCR通常每隔100ms至少要被传输一次。PCR的数值所表示的是解码器在读取完这个采样值的最后那个字节时解码器本地时钟所处的状态。通常情况下,PCR不直接改变解码器的本地时钟,而是作为参考基准来调整本地时钟,使之与PCR趋于一致。
PCR在MPEG-2系统中是非常重要的,因为解码器中的视频和音频采样时钟都锁定于与PCR锁相的本地时钟,也就是说,视频和音频解码过程能否正常进行,首先取决于解复用器能否准确恢复PCR。但在MPEG-2标准中,仅规定了传送PCR信息格式,并未对PCR恢复的方法及过程进行规范。PCR在单路节目顺序传送时较容易处理,但在信道发生变化(如用户切换频道)时或进行多路节目复用(包括本地节目插入)时,就需要对PCR值进行调整,这一调整过程的实现是十分复杂的。
(6)压缩码流的随机接入
对于与音视频码流相关的节目获取、节目切换等应用,就需要用到随机接入功能。但是该功能的实现要求对应的基本流编码能直接支持随机接入。例如,视频流的随机接入可以通过Ⅰ帧实现,因为Ⅰ帧不涉及预测编码,因此它的解码不需要其他辅助信息,可直接进行。具体实现时,系统可以选择视频Ⅰ帧视频序列头部信息的开始部分作为该视频码流随机接入点。一般地,随机接入点还应与对应的PES数据包的开始部分一致。传输流(TS)对应的数据包的适配字段中带有一个随机接入指示(random_access_indicator)标志位,可用于指示该数据包中是否包含基本流随机接入点。若包含随机接入点,则数据包中对应的净荷是从构成随机接入基本流入口点的数据的首位置开始的。该方法允许在进行频道切换以及从传送流中寻找一个再同步点时数据包可以在传输层被直接丢弃。这样做可以在获得传输层的再同步后,简化从基本流中对随机接入点的搜索过程。
数字电视标准一般要求尽可能频繁地从传输流中插入随机接入点的信息,以充分满足频道快速切换的需要。
(7)本地节目插入
传送系统对本地节目和商业广告的插入也提供了技术支持,它可以通过在TS包的头部适配字段中设置标志位来实现。
在广播设备前端实现节目片段插入和频道切换的功能基本相似,主要有两处差别:第一,拼接过程中的时间常数不同;第二,实际应用时,在进行节目片段的插入操作时,码流要在插入节目片段的结束位置返回到原来的节目,而在频道切换操作中,切换将在拼接结束后转到另一个节目。
对于本地节目的插入,有两个层次的功能处理必须重视。较低层次的功能与对应节目个别单元的TS拼接相关;较高层次的功能则与构成节目TS的各基本流之间的协调处理有关。本地节目插入的第一步是提取数据包(解复用),即根据PID找到待插入节目对应的基本流,码流中包含有节目映射表(Program Map Table,PMT),在获得对应的数据包之后,节目插入操作就可以针对该PID对应的码流进行了。如果系统支持,某些数据包也可以不做任何改动就直接通过。总之,基本流的插入和删除操作是非常灵活的。
基本流插入的实现是通过在TS包头部设置不连续指示(discontinuity_indicator)和拼接倒计数(splice_countdown)两个字段来实现的。用来告诉解码器PCR变换到了一个新的时间基准上。这样可以很方便地通知解码器码流的变换不是由于信道传输错误造成的,而是由节目提供方人为改变的。解码器只需继续进行正常的解码,而编码器必须正确地构造码流,以免解码器端发生数据上溢或下溢,导致系统崩溃。
适配字段的拼接倒计数(splice_countdown)可用于表示切换到新的码流的断点的后续数据包。倒计数的值大于0,并随后续一系列同一业务对应的数据包而递减。
数字电视标准在MPEG-2的基础上增加了更严格的传输编码约束。如要求视频PES包头部之后紧接着视频访问单元,这样有利于加快获取速度。第一个被插入的数据包包含PCR值,其中discontinuity_indicator位的值取“1”以通知解码器将有插入操作发生。码流中的第一个净荷数据以PES头开始,它包括一个PTS字段,可以告诉解码器立即显示的时间。因为PES头部也带有一个data_alignment_indicator字段来对数据对齐进行设置,因此紧接着头部的第一个数据将是视频序列。相应地,解码器一旦收到被插入节目片段,就立即开始解码。但是对于MPEG-2码流来说可能没有这些约束,因此就无法保证插入操作的可靠性。
系统要保障向某一码流频繁执行插入操作,而且不受系统传输层的控制,这一点是非常重要的。传输层只是为插入操作提供了一种机制,具体实现插入节目片段的方法则需要对音视频信号的信源编码做精确控制。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。