关闭

MPEG2基础

853人阅读 评论(0) 收藏 举报
分类:

       MPEG-2

1.1      概述

MPEG-1的扩展性有限,于是MPEG1995年发布了MPEG-2,编号为ISO/IEC13818,名称为“运动图像及其伴音信息的通用编码”(Generic coding of moving pictures and associated audioinformation)。目前最新的版本是2000版,分为10个部分:

² Part 1 系统   MPEG-1Part 1作用类似,规定了将视音频及其它相关数据组合成一个单一数据流的方法,并针对不同的应用场合提供了两种格式:应用于无错环境的节目流(PS: ProgramStream)和应用于恶劣环境的传输流(TS: TransportStream);

²  Part 2 视频   规定了视频编码的方法;

²  Part 3 音频   规定了音频编码的方法,本质上与MPEG-1Part 3相同,但进行了扩展,可以支持5.1声道和7.1声道的环绕立体声;

²  Part 4 符合性测试             规定了测试方法,相关厂家可据此测试某个具体实现是否遵从了前三部分的规定;

²  Part 5 软件模拟         给出了一个包含Part1,2,3的完整软件实现;

²  Part 6 DSM-CC数字存储媒体-命令与控制    描述交互式多媒体网络中服务器与用户间的会话信令集;

²  Part 7     规定了一种与MPEG-1 Part 3不兼容的音频编码算法,又被称为AACAdvanced Audio Coding),同时支持多达48个音轨、15个低频音轨、高达96kHz采样率和比特率、多种语言的兼容能力、更高的效率,AAC可以在比MP3文件缩小30%的前提下提供更好的音质;

²  Part 8     原计划开发一种针对10bit采样数据的视频编码算法,但后来发现业界对此欠缺兴趣,现已中止开发;

²  Part 9     定义了用于传输流的实时接口

²  Part10    Part 6的符合性测试有关,目前正在开发中;

另外,1990年成立的ATM视频编码专家组与MPEGMPEG-2Part 1Part 2进行了合作,故MPEG-2Part 1Part 2同时也是ITU的标准,编号分别为H.220H.262

1.2      系统层

1.2.1          全貌

上图虚线右侧就是MPEG-2 Part 1的定义范围,首先将来自视音频编码期器的数据(即ES流,ElementaryStream)封装为PESPacketisedElementary Streams),然后再视环境和用途不同进一步封装成两种码流:

² Program Stream节目流              用于相对无错的环境(如各种存储介质),封装后的包不定长,而且尺寸较大,DVD就是节目流的一种应用,MPEG-2的节目流与MPEG-1的系统层后向兼容。

² TransportSream传输流             适用于在各种恶劣环境(如ATMSDH等)传输MPEG-2码流,采用定长包,并规定了相应的检错手段IPTV的应用场景是IP网络,链路质量比ATMSDH恶劣得多,显然应该采用TS格式,后面将加以详细描述。

1.2.2          TS包结构

MPEG-2传输流由一个个连续的TS包(TransportStream Packet)组成,TS包长固定为188个字节,之所以确定这个长度,其中有点故事:

MPEG-2的系统层标准是由ISOITU联合制定的,而在标准制定的时期,ATM炙手可热,作为ITU的标准自然要有所考虑:ATM信元的大小是53字节,其中负荷字段48字节,但其中有一个特殊字节,实际可用的负载长度是47字节,这样一个TS包刚好可以封装为4ATM信元!

上图给出了TS包结构的语法,各字段含义如下:

²  sync_byte             同步字节,固定取值为0x47,接收端可以通过这个字段从连续的字节流中正确定位TS包的起始位置——这个过程称为同步,由于0x47这个取值也可能出现在TS包的其它位置,故在进行同步时必须利用同步字节固定间隔和固定数值的特性,连续多次(通常为5-6次)在期望的位置接收到同步字节才能认为实现了同步;

²  transport_error_indicator            传输错误指示,通常由MPEG-2标准范围以外的实体设置,表明TS包出错;

²  payload_unit_start_indicator              负荷起始标志,TS包的负荷数据可能被封装在多个TS包中,而本字段则表示本TS包携带有其负荷数据的起始字节;

²  transport_priority         优先级标志,如果此标志被置位,则负责传输TS的设备必须为这个包分配较高的优先级;

²  PID         包标识,TS可以将不同用途的数据复用到同一路码流中,而不同用途的数据则靠PID彼此区分,相同用途的数据具有相同的PID。如下图所示:

PID的取值需要遵循一定的规则,其中一些被保留用于特殊用途:

PID

用途

0x0000

PAT (Program  Association Table),节目关联表,描述本路TS流中有哪些节目以及如何访问这些节目。

0x0001

CAT (Conditional  Access Table),条件访问表,与加密有关

0x0002

Transport  Stream Description Table,传输流描述表

0x0003-0x000F

保留给系统使用

0x0010

NIT  (Network Information Table),网络信息表,描述承载TS流的传输网络的情况。在MPEG-2标准中其实并没有为NIT指定特定的PID,但厂家在具体实现时,都是使用0x0010这个值。

0x0011-0x1FFFE

供应用使用

0x1FFF

Null Packe,用于填充的空包,TS流最初被设计为在E3T3等时隙链路上传输,如果有效数据不足的话,就要使用空包来填充。

 

²  transport_scrambling_control            传输加密标识,用来说明包负荷数据的加密方式,全0表示无加密,其余取值则由用户定义;

²  adaptation_field_control             调整字段控制,用来指示TS包头是否有调整字段,取值及含义如下:

PID

含义

0x00

TS包没有调整字段也没有负荷

0x01

TS包仅有负荷,没有调整字段

0x10

TS包仅有调整字段,没有负荷

0x11

TS包既有调整字段,又有负荷

调整字段类似于RTP的扩展头,逻辑上属于包头的一部分,通常用来携带一些不是专属于单个TS包的信息,某个节目的参考时钟PCRProgram Clock Reference)就是通过调整字段来传递的。PCR是一个42比特的时钟计数,其频率为27MHz,作为媒体PTSDTS的基准,在MPEG-2中,PTSDTS计数的时钟频率为90KHz,精度仅为PCR1/300

²  continuity_counter              连续性计数,该字段在具有相同PIDTS包之间保持单调递增,如发生溢出则取值回绕,对于前面介绍PID时给出的例子,各TS包的连续性计数可能取值如下:

如果某个TS包没有携带负荷(调整字段控制取值为0x000x10,比如说空包),则该包的连续性计数字段不必递增。设计TS时的目标环境是较低差错率的时隙链路,极少发生连续数百个字节都丢失的情况,所以这个字段只分配了4个比特。在IPTV环境,连续丢包极为常见,TS的这个字段宽度显然不够用,所以在IPTV中检测TS包的丢包数,无法做到100%准确。

1.2.3          PSI

TS流中有多个节目,而每个节目又有音频、视频、字幕等多种数据,如何将其复用为一路码流?各个PID之间的关系是什么?MPEG-2将这些信息称为PSI  (Program Specific Information)TS设计了一系列的表格来传输PSI,下面做一简单介绍:

Ø  PAT        Program AssociationTable,节目关联表,一个TS流中有且仅有一个PATPAT里面有多个条目,通常每个条目描述一个节目,每个条目有两个内容:节目的节目号和对应的PMT表的PIDMPEG-2中的“节目”与通常的频道概念相近,16位(二进制位)的节目号是其唯一标识,其中节目号0被保留给网络信息表NIT使用,下图为PAT的表结构。

Ø  PMT              Program MapTable,节目映射表,一个节目有一个PMTPMT中有多个条目,每个条目给出属于该节目的一个数据流的信息,包括两部分:该数据流的类型(视频、音频、字幕等)及其对应的PID。除此之外,PMT中还可携带了与节目有关的其它信息,如PCRPID、节目描述等,下图为PMT的表结构:

Ø  NIT        Network InformationTable,网络信息表,提供了传输流的相关数据以及网络自身特性相关的信息,比如网络名称,传输参数(如频率,调制方式等),NITPIDPAT给出,但基本固定。NIT采用PrivateSection即私有段的格式来定义,在此不做介绍。

 

Ø  CAT        Conditional AccessTable,条件接收表,用于节目的加密和解密,所在分组的PID1,其中给出了条件控制信息(ECM)和条件管理信息(EMM)所在分组的PID。下图为其表结构:

PAT为入口的节目复用体系如下图所示:

上图给出了PSI表格的一个例子,可见PATPMT中的条目基本相当于指针,PAT里面的指针指向PMT,而PMT里面的指针指向组成节目的具体媒体流。上图中ProgramB有两路音频,可能是配音语言不同,而ProgramC使用了与ProgramB同样的音频内容,这在MPEG-2的规范中也是允许的。

在实际运行时,节目的情况可能发生改变,所以在PATPMT的结构中,还有一个版本号字段,通过版本号的变化通知接收端需要重新解析节目信息。TS流最初被设计为用于无上行链路的环境,接收端开始接收TS流的时机是任意的,为了让接收端能正常获得节目信息,PATPMT必须不断重复发送(就算版本号无变化时也是如此)。为了不让接收端为此等待太长时间,重复发送的时间间隔不能太长,但MPEG-2标准本身并没有给出任何相关的建议,一般是希望不要超过500ms,也有些标准规定了比这更小的值。

上图中没有考虑CA,以CAT为入口的加扰码流结构如下图所示:

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:529368次
    • 积分:7225
    • 等级:
    • 排名:第3077名
    • 原创:202篇
    • 转载:197篇
    • 译文:2篇
    • 评论:32条
    最新评论