首页 > 软件列表 > StreamTransport
StreamTransport

StreamTransport

软件语言:
软件授权:暂不知晓
适用系统:Windows
创建时间:2020-12-11
软件厂商/开发者信息: -

基本内容

MPEG 组织于 1994 年推出 MPEG-2 压缩标准,以实现视/音频服务与应用互操作的可能性,MPEG-2 标准是针对标准数字电视和高清晰度电视在各种应用下的压缩方案和系统层的详细规定。对应于不同的应用,符合 MPEG-2 标准的码流又分为传送流和程序流,本文主要讲解了传送流有关的部分数据结构,从实际应用的传送流码流中截取了部分码流做了说明,并给出了部分解析传送流码流的实例程序。

在 MPEG-II 标准中,为了将一个或更多的音频、视频或其他的基本数据流合成单个或多个数据流,以适应于存储和传送,必须对其重新进行打包编码,在码流中还需插入各种时间标记、系统控制等信息,最后送到信道编码与调制器。这样可以形成两种数据流——传送流(TS)和节目流(PS),分别适用于不同的应用。

传送流由一道或多道节目组成,每道节目由一个或多个原始流和一些其他流复合在一起,包括视频流、音频流、节目特殊信息流(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 信息,在此是 PAT 包;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 表示此 payload_unit_start_indicator 是 1,表示包含 TS 流分组的第一个有效字节包含 point_field 字段,占一个字节。ID 为 0x32,表示此 TS 流包含 PSI 信息 PID 为 0x032,是 pat 表中的 PID,说明此 TS 流中包含 PMT 表的信息。point_field=0x00,(Ts 头和 point_field1 字节共 5 字节)point_field 后是 0x02 表示此处的 pid 为 ts_program_ map_section()字段。0xB0 表示的 B 是同步头以及保留位,0 是 section_length 的一部部分 Section_length=0x02d,规定此字段的字节数,包含 CRC 部分;program_number=0x0001;0xC1 包含保留位、vision_number、current_next_indicator,C 中的 11 是保留位,C 中的 00 和低 4 位中的前 3 位是 vision_number 部分,最低位是 current_next_indicator 部分;version_number=0x0,current_next_indicator=1,section_number=0x00,last_section_number=0x00;0xE0 中的 E 的高三位是保留位,E 的最低位和其后的 4 位 0 以及其后的 8 位都是 PCR_PID 字段内容,PCR_PID=0x020;其后的 0xF0 中的高 4 位是保留位,低 4 位和其后的 8 位都是 program_info_length 字段内容,表示描述字段的字节数,program_info_length=0x000;stream_type=0x03 表示其后的 PID 为 ISO/IEC 11172 音频数据的 PID,其后的 0xE0 中的 E 的高三位是保留位,E 的最低位和其后的 4 位 0 以及其后的 8 位都是 element_PID 字段内容,element_PID=0x021,表示 TS 流中如果包含音频部分,则此 TS 流的 PID 为 0x21;其后的 0xF0 中的高 4 位是保留位,低 4 位和其后的 8 位都是 ES_info_length 字段内容,表示描述字段的字节数,ES_info_length=0x006,表示其后的 6 个字节为原始流的描述部分。6 个字节之后的 stream_type=0x02,表示其后的 PID 为 ITU-T Rec.H.262| ISO/IEC 13818-2 视频数据的 PID;其后的 0xE0 中的 E 的高三位是保留位,E 的最低位和其后的 4 位 0 以及其后的 8 位都是 element_PID 字段内容,element_PID=0x20,表示 TS 流中如果包含视频部分,则此 TS 流的 PID 为 0x20, 其后的 0xF0 中的高 4 位是保留位,低 4 位和其后的 8 位都是 ES_info_length 字段内容,表示描述字段的字节数,ES_info_length=0x10,表示其后的 16 个字节为原始流的描述部分。其后的 4 字节是 CRC 校验部分,然后是填充部分。

一般 MPEG-II TS 码流分析

从 MPEG-II TS 流片源上截取的码流如图 6 所示。

如上述截取的码流所示:Ts 包头以 0x47 开头,在 0x47 后 3 字节是 TS 包头信息:ID 为视频 ID,是 0x20,field_point 字段 00,其后是 PES 包包头:00 01 E0 表示是视频 PES 包包头,其后的帧有关信息共 5 字节,2 字节 PES 包长度是 27 6A,表示此 PES 数据包的长度是 0x276a 即 10090 字节;2 字节标准位信息是 85 80,5 字节中的最后一字节表示附加数据长度是 0B,其后是正式视频数据:开始为 00 00 01 00,是 I、B、P 帧的判别在 9D,二进制为 10 011 101 中的中间 3 位 011 指名帧帧是什么样的帧,次例中为 011 即为 B 帧,当是 001 时为 I 帧,010 时为 P 帧。

从某种意义上来说,数字电视的发展主要取决于数字压缩技术和数字调制解调技术的发展。MPEG-2 标准较为成熟,虽然码率压缩的办法许多,如 MPEG 系列(MPEG-1、MPEG-2、MPEG-4、MPEG-7)以及小波压缩技术等。但在实用化方面 MPEG-2 已经走在了前面,且遵循标准研制出的系统产品也已非常成熟,实际商业运营和效果也非常成功。

总之,MPEG-II 传输流在数字电视系统中得到了广泛的应用,在应用中可以通过分析码流来获得传输流的 PID、PRC 等信息,用来设置解码器等用处。

mpeg PMT 的 stream type 汇总:

H.222 总是在修订,增加最新的类型。以下来源于 H.222.0 (2006) Amendment 2

Value Description

0x00 ITU-T | ISO/IEC Reserved

0x01 ISO/IEC 11172-2 Video

0x02 ITU-T Rec. H.262 | ISO/IEC 13818-2 Video or ISO/IEC 11172-2 constrained parameter video stream

0x03 ISO/IEC 11172-3 Audio

0x04 ISO/IEC 13818-3 Audio

0x05 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 private_sections

0x06 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 PES packets containing private data

0x07 ISO/IEC 13522 MHEG

0x08 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Annex A DSM-CC

0x09 ITU-T Rec. H.222.1

0x0A ISO/IEC 13818-6 type A

0x0B ISO/IEC 13818-6 type B

0x0C ISO/IEC 13818-6 type C

0x0D ISO/IEC 13818-6 type D

0x0E ITU-T Rec. H.222.0 | ISO/IEC 13818-1 auxiliary

0x0F ISO/IEC 13818-7 Audio with ADTS transport syntax

0x10 ISO/IEC 14496-2 Visual

0x11 ISO/IEC 14496-3 Audio with the LATM transport syntax as defined in ISO/IEC 14496-3/Amd.1

0x12 ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in PES packets

0x13 ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in ISO/IEC 14496_sections

0x14 ISO/IEC 13818-6 Synchronized Download Protocol

0x15 Metadata carried in PES packets

0x16 Metadata carried in metadata_sections

0x17 Metadata carried in ISO/IEC 13818-6 Data Carousel

0x18 Metadata carried in ISO/IEC 13818-6 Object Carousel

0x19 Metadata carried in ISO/IEC 13818-6 Synchronized Download Protocol

0x1A IPMP stream (defined in ISO/IEC 13818-11,MPEG-2IPMP)

0x1B AVC video stream as defined in ITU-T Rec. H.264 | ISO/IEC 14496-10 Video

0x1C ISO/IEC 14496-3 Audio, without using any additional transport syntax, such as DST, ALS and SLS

0x1D ISO/IEC 14496-17 Text

0x1E Auxiliary video stream as defined in ISO/IEC 23002-3

0x1F-0x7E ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Reserved

0x7F IPMP stream

0x80-0xFF User Private

版本列表

  • StreamTransport v1.1.0.1 正式版

    StreamTransport v1.1.0.1 正式版

    一个强大的视频下载软件,它能够从土豆、优酷、56、酷6等国内视频网站获取正确的下载链 ...

    软件大小:1.9 MB 更新时间:2013-12-05
    详情