免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 901 | 回复: 0
打印 上一主题 下一主题

MPEG2-TS的小结 [1] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-27 10:23 |只看该作者 |倒序浏览

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

  Normal
  0
  
  7.8 磅
  0
  2
  
  false
  false
  false
  
   
   
   
   
   
   
   
   
   
   
   
   
  
  MicrosoftInternetExplorer4



/* Style Definitions */
table.MsoNormalTable
        {mso-style-name:普通表格;
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";
        mso-ansi-language:#0400;
        mso-fareast-language:#0400;
        mso-bidi-language:#0400;}
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组成,具体格式摘录如下:


  
  
  
  
  
  
  
  
  
  
  
  




file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtml1/14/clip_image002.jpg
在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的过程:

file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtml1/14/clip_image004.jpg
基本流程如下:首先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个部分组成。

file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtml1/14/clip_image006.jpg
对上面的各个字段简单说明一下:

  
  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包保留一小部分有用容量,通过填充字节加以填补,这样可以防止缓存器下溢,保持总码率恒定不变。

               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/70942/showart_1093511.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP