MPEG2-TS的小结

1. 简述

MPEG2 TS和数字电视是紧密不可分割的,值得总结一下其中的一些关系。

ISO/IEC-13818-1:系统部分;

ISO/IEC-13818-2:视频;

ISO/IEC-13818-3:音频;

ISO/IEC- 13818-4:一致性测试;

ISO/IEC-13818-5:软件部分;

ISO/IEC-13818-6:数字存储媒体命令与控制;

ISO/IEC- 13818-7:高级音频编码;

ISO/IEC-13818-8:系统解码实时接口;

MPEG2系统任务包括:

1. 规定以包传输数据的协议;

2. 规定收发两端数据流同步的协议;

3. 提供多个数据流的复用和解复用协议;

3. 提供数据流加密的协议。

以包形式存储和传送数据流是MPEG2系统之要点。

 

2. ES数据流

ES是直接从编码器出来的数据流,可以是编码过的视频数据流,音频数据流,或其他编码数据流的统称。ES流经过PES打包器之后,被转换成PES包。PES包由包头和payload组成,具体格式摘录如下:

在PES层,主要是在PES包头信息中加入PTS(显示时间标签)和DTS(解码时间标签)用于视频、音频同步。

其实,Mpeg-2用于视音频同步以及系统时钟恢复的时间标签分别在ES,PES和TS这3个层次中。在ES层,与同步有关的主要是视频缓冲验证VBV(Video Buffer Verifier),用以防止解码器的缓冲器出现上溢或下溢;在PES层,主要是在PES头信息里出现的显示时间标签PTS(Presentation Time Stamp)和解码时间标签DTS(Decoding Time Stamp);在TS层中,TS头信息包含了节目时钟参考PCR(Program Clock Reference),用于恢复出与编码端一致的系统时序时钟STC(System Time Clock)。

我们先看看从ES到PES的过程:

基本流程如下:首先MPEG-2压缩编码得到的ES基本流,这个数据流很大,并且只是I,P,B的这些视频帧或音频取样信息,然后加入一些同步信息,打包成长度可变长度的数据包PES,原来是流的格式,现在成了数据包的分割形式。同时要注意的是,ES是只包含一种内容的数据流,如只含视频,或只含音频等,打包之后的PES也是只含一种性质的ES,如只含视频ES的PES,只含音频ES的PES等。可以知道,ES是编码视频数据流或音频数据流,每个ES都由若干个存取单元(AU)组成,每个视频AU或音频AU都是由头部和编码数据两部分组成,1个AU相当于编码的1幅视频图像或1个音频帧,也可以说,每个AU实际上是编码数据流的显示单元,即相当于解码的1幅视频图像或1个音频帧的取样。PEG-2对视频的压缩产生I帧、P帧、B帧。把帧顺序I1,P4,B2,B3,P7,B5,B6帧的编码ES,通过打包并在每个帧中插入PTS/DTS标志,变成PES。在插入PTS/DTS标志时,由于在B帧PTS和DTS相等,所以无须在B帧多插入DTS。而对于I帧 和P帧,由于经过复用后数据包的顺序会发生变化,显示前一定要存储于视频解码器的从新排序缓存器中,经过从新排序后再显示,所以一定要同时插入PTS和 DTS作为从新排序的依据。

 

其中,有否PTS/DTS标志,是解决视音频同步显示、防止解码器输入缓存器上溢或下溢的关键所在。PTS表明显示单元出现在系统目标解码器(STD- System Target Decoder)的时间, DTS表明将存取单元全部字节从STD的ES解码缓存器移走的时刻。视频编码图像帧次序为 I1,P4,B2,B3,P7,B5,B6,I10,B8,B9的ES,加入PTS/DTS后,打包成一个个视频PES包。每个PES包都有一个包头,用于定义PES内的数据内容,提供定时资料。每个I、P、B帧的包头都有一个PTS和DTS,但PTS与DTS对B帧都是一样的,无须标出B帧的DTS。对I帧和P帧,显示前一定要存储于视频解码器的重新排序缓存器中,经过延迟(重新排序)后再显示,一定要分别标明PTS和DTS。例如,解码器输入的图像帧次序为I1,P4,B2,B3,P7,B5,B6,I10,B8,B9,依解码器输出的帧次序,应该P4比B2、B3在先,但显示时P4一定要比B2、B3在后,即P4要在提前插入数据流中的时间标志指引下,经过缓存器重新排序,以重建编码前视频帧次序I1,B2,B3,P4,B5,B6,P7,B8,B9,I10。显然,PTS/DTS标志表明对确定事件或确定信息解码的专用时标的存在,依靠专用时标解码器,可知道该确定事件或确定信息开始解码或显示的时刻。例如,PTS/DTS标志可用于确定编码、多路复用、解码、重建的时间。

 

3. PS数据流

上节说过,ES首先需打包成PES流包,然后PES根据需要打包成PS或TS包进行存储或传输。其每路ES只包含一路信源的编码数据流,所以每路PES也只包含相对应信源的数据流。

对 PS流而言,每个PES包头含有PTS和DTS,流识别码,用于区别不同性质ES。然后通过PS复用器将PES包复用成PS包。实际上是将PES包分解为更细小的PS包。在解码的时候,解复用器将PS分解成一个个PES包,拆包器然后将PES包拆成视频和音频的ES,最后输入至各自解码器进行解码。一个问题是:各个ES在解码时,如何保证视音频的同步呢?除了PTS和DTS的配合工作外,还有一个重要的参数是SCR(system clock reference)。在编码的时候,PTS,DTS和SCR都是由STC(system time clock)生成的,在解码时,STC会再生,并通过锁相环路(PLL-phase lock loop),用本地SCR相位与输入的瞬时SCR相位锁相比较,以确定解码过程是否同步,若不同步,则用这个瞬时SCR调整27MHz的本地时钟频率。最后,PTS,DTS和SCR一起配合,解决视音频同步播放的问题。PS格式摘录如下:

byte 0

byte 1

byte 2

byte 3

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

0000 0000 0000 0000 0000 0001

start code

1011 1010

PACK identifier

byte 4

byte 5

byte 6

byte 7

byte 8

byte 9

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

01

SCR 32..30

1

SCR 29..15

1

SCR 14..00

1

SCR_ext

1

byte 10

byte 11

byte 12

byte 13

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

Program_Mux_Rate

1

1

reserved

pack_stuffing_length

PS包的长度比较长且可变,主要用于无误码环境里,因为越长的话,同步越困难,且在丢包的情况下,重组也越困难。所以,PS适合于节目信息的编辑和本地内容应用的application。

 

4. TS数据流

TS流也是由一个或多个PES组合而来的,他们可以具有相同的时间基准,也可以不同。其基本的复用思想是,对具有相同时间基准的多个PES现进行节目复用,然后再对相互有独立时间基准的各个PS进行传输复用,最终产生出TS。TS包由包头和包数据2部分组成,其中包头还可以包括扩展的自适用区。包头长度占4bytes,自使用区和包数据共占184bytes,整个TS包长度相当于4个ATM包长。TS包的包头由如下图摘录所示的同步字节、传输误码指示符、有效载荷单元起始指示符、传输优先、包识别(PID-Packet Identification)、传输加扰控制、自适应区控制和连续计数器8个部分组成。

对上面的各个字段简单说明一下:

Partial Transport Stream Packet Format

Name

Number
of bits

Description

sync byte

8

0x47

Transport Error Indicator (TEI)

1

Set by demodulator if can't correct errors in the stream[2]

Payload Unit Start Indicator

1

1 means start of PES data or PSI otherwise zero only .

Transport Priority

1

One means higher priority than other packets with the same PID.

PID

13

Packet ID

Scrambling control

2

'00' = Not scrambled.   The following per DVB spec [3]:   '01' = Reserved for future use,   '10' = Scrambled with even key,   '11' = Scrambled with odd key

Adaptation field exist

1

1 means presence of the adaptation field

Payload data exist

1

1 means presence of data

Continuity counter

4

 

 

 

Note: the total number of bits above is 32 and is called the transport stream 4-byte prefix.

Adaptation field

0 or more

Depends on flags

Payload Data

0 or more

Depends on flags

Adaptation Field Format

Name

Number
of bits

Description

Adaptation Field Length

8

Number of bytes in the adaptation field immediately following this byte

Discontinuity indicator

1

Set to 1 if a discontinuity occurred in the continuity counter of the TS packet

Random Access indicator

1

Set to 1 if the PES packet in this TS packet starts a video/audio sequence

Elementary stream priority indicator

1

1 = higher priority

PCR flag

1

1 means adaptation field does contain a PCR field

OPCR flag

1

 

Splicing point flag

1

1 means presence of splice countdown field in adaptation field

Transport private data flag

1

1 means presence of private data bytes in adaptation field

Adaptation field extension flag

1

1 means presence of adaptation field extension

Below fields are optional

variable

Depends on flags

PCR

33+9

Program clock reference

OPCR

33+9

Original Program clock reference. Helps when one TS is copied into another

Splice countdown

8

Indicates how many TS packets from this one a splicing point occurs (may be negative)

stuffing bytes

variable

 

其中,在包头中:

同步字节(sync byte)的自动相关特性,检测数据流中的包限制,建立包同步;

传输误码指示符(Transport Error Indicator),指有不能消除误码时,采用误码校正解码器可表示1bit 的误码,但无法校正;

有效载荷单元起始指示符(Payload Unit Start Indicator),表示该数据包是否存在确定的起始信息;

传输优先级(Transport Priority),是给TS包分配优先权;PID值是由用户确定的,解码器根据PID将TS上从不同ES来的TS包区别出来,以重建原来的ES;

传输加扰控制(Scrambling control),可指示数据包内容是否加扰,但包头和自适应区永远不加扰;

自适应区控制存在字段(Adaptation field exist),用2 bit表示有否自适应区,即(01)表示有有用信息无自适应区,(10)表示无有用信息有自适应区,(11)表示有有用信息有自适应区,(00)无定义;

载荷存在标记字段(Payload data exist),1一位着存在载荷;

连续计数器(Continuity counter)可对PID包传送顺序计数,据计数器读数,接收端可判断是否有包丢失及包传送顺序错误。显然,包头对TS包具有同步、识别、检错及加密功能。

    TS包自适应区由自适应区长、各种标志指示符、与插入标志有关的信息和填充数据4部分组成。其中标志部分由间断指示符、随机存取指示符、ES优化指示符、PCR标志、接点标志、传输专用数据标志、原始PCR标志、自适应区扩展标志8个部分组成。重要的是标志部分的PCR字段,可给编解码器的27MHz时钟提供同步资料,进行同步。其过程是,通过PLL,用解码时本地用PCR相位与输入的瞬时PCR相位锁相比较,确定解码过程是否同步,若不同步,则用这个瞬时PCR调整时钟频率。因为,数字图像采用了复杂而不同的压缩编码算法,造成每幅图像的数据各不相同,使直接从压缩编码图像数据的开始部分获取时钟信息成为不可能。为此,选择了某些(而非全部)TS包的自适应区来传送定时信息。于是,被选中的TS包的自适应区,可用于测定包信息的控制bit和重要的控制信息。自适应区无须伴随每个包都发送,发送多少主要由选中的TS包的传输专用时标参数决定。标志中的随机存取指示符和接点标志,在节目变动时,为随机进入I帧压缩的数据流提供随机进入点,也为插入当地节目提供方便。自适应区中的填充数据是由于PES包长不可能正好转为TS包的整数倍,最后的TS包保留一小部分有用容量,通过填充字节加以填补,这样可以防止缓存器下溢,保持总码率恒定不变。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mpeg2-tsMPEG-2 Transport Stream)是一种用于数字广播和视频传输的协议。它的目标是将音频、视频和其他数据以数据包的形式进行传输和存储。 mpeg2-ts的在线解析涉及将以mpeg2-ts格式编码的媒体文件进行解析和分析,以便播放或进行其他操作。解析过程包括以下几个步骤: 1. 读取文件头信息:首先读取文件的头部信息,其中包括文件的标识符、版本号、编码信息等。通过分析头部信息,可以确定文件的类型和结构。 2. 解析PAT表(Program Association Table):PAT表记录了各个节目的信息和各个PID(Packet ID)的映射关系。通过解析PAT表,可以获取到TS流中的所有节目的PID。 3. 解析PMT表(Program Map Table):PMT表描述了各个节目中包含的音频、视频和其他数据的PID,并提供了流的详细信息。通过解析PMT表,可以获取到各个节目中各个流的PID以及编码格式等相关信息。 4. 解析数据包:根据PID的信息,解析相应的数据包,提取出音频、视频和其他数据。对于音视频数据,还需要进行解码和解封装操作,以便进行播放或进一步处理。 5. 分析和处理数据:分析音视频和其他数据的格式、编码方式以及其他相关信息,以便进行后续处理,如解码、转码、封装等。 通过对mpeg2-ts文件进行在线解析,可以实现对媒体文件的播放、编辑、转码等功能。同时,也可以提取音视频数据进行分析和处理,以满足不同的应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值