TS流信息描述2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
transport stream
MPEG组织于1994年推出MPEG-2压缩标准,以实现视/音频服务与应用互操作的可能性,MPEG-2标准是针对标准数字电视和高清晰度电视在各种应用下的压缩方案和系统层的详细规定。对应于不同的应用,符合MPEG-2标准的码流又分为传送流和程序流,本文主要讲解了传送流有关的部分数据结构,从实际应用的传送流码流中截取了部分码流做了说明,并给出了部分解析传送流码流的实例程序。
在MPEG-II标准中,为了将一个或更多的音频、视频或其他的基本数据流合成单个或多个数据流,以适应于存储和传送,必须对其重新进行打包编码,在码流中还需插入各种时间标记、系统控制等信息,最后送到信道编码与调制器。这样可以形成两种数据流——传送流(TS)和程序流(PS),分别适用于不同的应用,图1给出了单路节目的视音频数据流的复用框图。
传送流(Transport Stream)简称TS流,它是根据ITU-T Rec.H.222.0|ISO/IEC 13818-2 和ISO/IEC 13818-3协议而定义的一种数据流,其目的是为了在有可能发生严重错误的情况下进行一道或多道程序编码数据的传送和存储。这种错误表现为比特值错误或分组丢失。传送流由一道或多道节目组成,每道节目由一个或多个原始流和一些其他流复合在一起,包括视频流、音频流、节目特殊信息流(PSI)和其他数据包。其中PSI表有4种类型:节目关联表(PAT)、节目映射表(PMT)、网络信息表和条件访问表。传送流应用比较广泛,如视音频资料的保存、电视节目的非线性编辑系统及其网络等。在开发机顶盒以及视频设备时有时需要对码流的编码知识有比较清楚地了解,这样才能在遇到问题时做出全面的分析。
TS流结构分析
如图2所示,TS包的长度是固定的,为188字节。包括同步字节(sync_byte)0x47和数据包识别号PID等。PID为13位字段,指示存储于分组有效负载中数据的类型,PID值0x0000为程序关联表保留,而0x0001为条件访问表保留,0x1FFF为空分组保留。从PID可以判断其后面负载的数据类型是视频流、音频流、PSI还是其他数据包。
PSI描述说明
在MPEG-II中定义了节目特定信息(PSI),PSI用来描述传送流的组成结构,在MPEG-II系统中担任极其重要的角色,在多路复用中尤为重要的是PAT表和PMT表。PAT表给出了一路MPEG-II码流中有多少套节目,以及它与PMT表PID之间的对应关系;PMT表给出了一套节目的具体组成情况与其视频、音频等PID对应关系。PSI提供了使接收机能够自动配置的信息,用于对复用流中的不同节目流进行解复用和解码。PSI信息由以下几种类型表组成:
◆节目关联表(PAT Program Association Table)
PAT表用MPEG指定的PID(00)标明,通常用PID=0表示。它的主要作用是针对复用的每一路传输流,提供传输流中包含哪些节目、节目的编号以及对应节目的节目映射表(PMT)的位置,即PMT的TS包的包标识符(PID)的值,同时还提供网络信息表(NIT)的位置,即NIT 的TS包的包标识符(PID)的值。
◆条件接收表(CAT Conditional Access Table)
CAT表用MPEG指定的PID(01)标明,通常用PID=1表示。它提供了在复用流中条件接收系统的有关信息,指定CA系统与它们相应的授权管理信息(EMM))之间的联系,指定EMM 的PID,以及相关的参数。
◆节目映射表(PMT Program Map Table)
节目映射表指明该节目包含的内容,即该节目由哪些流组成,这些流的类型(音频、视频、数据),以及组成该节目的流的位置,即对应的TS包的PID值,每路节目的节目时钟参考(PCR)
字段的位置。
◆网络信息表(NIT Nerwork Information Table)
网络信息表提供关于多组传输流和传输网络相关的信息,其中包含传输流描述符、通道频率、卫星发射器号码、调制特性等信息。
◆传输流描述表(TSDT Transport Stream Description Table)
传输流描述表由PID为2的TS包传送,提供传输流的一些主要参数。
◆专用段(private_section)
MPEG-2还定义了一种专用段用于传送用户自己定义的专用数据。
◆描述符(Descripter)
除了上述的表述之外,MPEG-2还定义了许多描述符,这些描述符提供关于视频流、音频流、语言、层次、系统时钟、码率等多方面的信息,在PSI的表中可以灵活的采用这些描述符进一步为接收机提供更多的信息。
在解码时,接收机首先根据PID值找到PAT表,找出相应节目的PMT表的PID,再由该PID 找到该PMT表,再在PMT表中找到相应的码流,然后开始解码。PSI结构和TS流的关系示例如图3所示。
PES包格式说明
经过视音频压缩来的数码流称为ES流,ES流经过打包器输出PES流。PES包是非定长的,音频PES包不超过64K字节,视频一般一帧一个PES包。为实现解码的同步,还需插入相关的标志信息,多个打包后的数码流再经过复用器成为传送流(TS流),PES包的结构图如图4所示。对截取的MPEG-II TS码流实例分析
对截取的包含PSI信息的码流分析
从MPEG-II TS流片源上截取的包含PSI信息的码流如图5所示。
搜索TS数据流从包同步字0x47开始,由于该同步头字节并不是唯一的,数据包中可能有码字也恰为其值。因此,要准确检测同步,必须首先找到输入缓冲区中第一个0x47,然后将其指针向后推187个字节的位置再检测是否为0x47,如果是,则输出包同步信号;接着每隔187字节检测一次,如是0x47,则继续输出包同步信号,如不是,则重新开始搜索0x47。
在上段截取的包含PSI信息的码流中是一个TS文件中的起始数据截图,TS流文件中的数据Ts包头以0x47开头,在0x47后3字节是ts包头信息:0x40中的4表示此payload_unit_start_indicator 是1,表示包含TS流分组的第一个有效字节包含point_field字段,占一个字节;ID为0x00,表示此TS流包含PSI信息,在此是PA T包;0x1c中的1表示仅不含附加信息,仅含有有效载荷;C表示continuity_ counter=c。在4字节的TS包头之后时一字节的point_field=0,然后是program_association_ section()字段的信息。Table_id=0x00,表示在此PSI内容是program_ association_section()字段的信息内容;0xB0表示的B是同步头以及保留位,0是section_length 的一部分;section_length=0x00d(包含0x0D的前一个0);transport_ stream_ id=0x0000;0xC1包含保留位、vision_number、current_ next_indicator ,C中的11是保留位,C中的00和低4位中的前3位是vision_number部分,最低位是current_next_indicator部分。
vision_number=0x00;current_next_indicator=1,表示所发送的pat表当前有效;ection_number=0x00,last_ section_number=0x0000;program_number=0x0001;0xE0中的E的高三位是保留位,E的最低位和其后的4位0以及其后的8位都是program_map_PID字段内容,所以program_map_PID=0x032,即PMT的PID为0x32;CRC是0xbcf11595。其后的0xff为填充字节。
在第二个TS流中,在0x47后3字节是ts包头信息:0x40中的4表示此