YeGuli
发布于 2018-12-11 / 10 阅读
0

TS流格式分析

TS格式介绍

TS:全称为MPEG2-TS。TS即"Transport Stream"的缩写。在TS流里可以填入很多类型的数据,如视频、音频、自定义信息等。MPEG2-TS主要应用于实时传送的节目,比如实时广播的电视节目。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。简单地说,将DVD上的VOB文件的前面一截cut掉(或者是数据损坏数据)就会导致整个文件无法解码,而电视节目是任何时候打开电视机都能解码(收看)的。
TS流最经典的应用就是我们平时生活中的数字高清电视。我们看的电视码流就是TS封装格式的码流,电视码流发送过来后,就会由我们的机顶盒进行解封装,解码,然后传给电视机进行播放。我们看电视,有很多的频道,节目,对应码流是怎么区分的呢?TS流引入了PAT和PMT两张表格的概念来解决这个问题。

TS解析需要参考:ISO/IEC 13818-1的2.4 Transport Stream bitstream requirements

TS流包含的内容

一段TS流,必须包含PAT包、PMT包、多个音频包、多个视频包、多个PCR包、以及其他信息包。
解析TS流数据的流程:

  1. 查找PID为0x0的包,解析PAT,PAT包中的program_map_PID表示PMT的PID;
  2. 查找PMT,PMT包中的elementary_PID表示音视频包的PID,PMT包中的PCR_PID表示PCR的PID,有的时候PCR的PID跟音频或者视频的PID相同,说明PCR会融进音视频的包,注意解析,有的时候PCR是自己单独的包;
  3. CAT、NIT、SDT、EIT的PID分别为: 0x01、0x10、0x11、0x12。

PAT和PMT

TS流是以每188字节为一包,我们可以称为ts packet。这个ts packet有可能是音视频数据,也有可能是表格。举例说明,TS流的包顺序为:
PAT,PMT,DATA,DATA,,,,,,PAT,PMT,DATA,DATA,,,,,,

每隔一段时间,发送一张PAT表,紧接着发送一张PMT表,接着发送DATA(音视频)数据。

PAT表格里面包含所有PMT表格的信息,一个PMT表格对应一个频道,比如中央电视台综合频道。而一个PMT里面包含所有节目的信息,比如CCTV1~CCTV14。在实际情况中我们是有很多频道的,所以PMT表格可不止一张,有可能是PAT,PMT,PMT,PMT,,,DATA,DATA,,,,PAT,PMT,PMT,,,DATA,DATA这样的形式。除了这个设定外,每个频道或节目都有自己的标识符(PID),这样当我们拿到一个DATA,解析出里面的PID,就知道是什么节目,并且也知道所属频道是什么了。我们看电视的时候,会收到所有节目的DATA,当我们正在看某个节目的时候,机顶盒会把这个节目的DATA单独过滤出来,其它的舍弃。