MPEG-2TS原理与测量视频与流媒体技术讲座(1)终端多媒体部李晏2011-8-12背景MPEG:动态图像专家组(MovingPictureExpertsGroup),1988年成立,致力于开发视频音频的压缩编码技术MPEG-2MPEG工作组于1994年发布的视频和音频压缩国际标准。MPEG-2通常用来为广播信号提供视频和音频编码。MPEG-2TS(TransportStream)为传输和复用音视频数据而定义的一种流数据格式,与MPEG-PS相对(ISO/IEC13818-1)背景MPEG-2标准文档集ISO/IEC13818-1:系统-描述视频和音频的同步和多路技术ISO/IEC13818-2:视频-视频压缩ISO/IEC13818-3:音频-音频压缩。ISO/IEC13818-4:测试规范ISO/IEC13818-5:仿真软件ISO/IEC13818-6:媒体数字存储(DSM-CC)扩展ISO/IEC13818-7:高级音频编码技术(AAC)ISO/IEC13818-9:实时接口扩展ISO/IEC13818-10:DSM-CC规范ISO/IEC13818-11:IPMPonMPEG-2systems1MPEG媒体流概述2MPEG-2TS原理与协议实现3媒体质量指标名词解释ES:无始无终压缩后的视音频信号称作ES(elementarystream)流PES:每个PES封装一个帧的信息压缩后所有ES流被打成不同长度的包,叫做PES(packetizedelementarystreams)。AU:ES流中可以独立解析的数据单元被称为访问单元(accessunit)ES—PES—TSMPEG-2TS与ATM网络MPEG-2TS考虑到ATM网络的需求而将数据段长度定为188ByteMPEG-2TS与数字有线电视MPEG-2TS与IP网络模型IPUDPTCPRTPRTSPMPEG-TSPESES应用层传输层网络层TCP/IP模型媒体流协议层次1MPEG媒体流概述2MPEG-2TS原理与协议实现3媒体质量指标名词解释STC:1/27微秒一个以27MHz运行的时间计数器(systemtimeclock)PCR:编码端在固定时刻将最新的STC计数器值复制到TS流中,作为解码端的时间准绳(programclockreference)DTS:解码时间戳,以PCR为标准(decodingtimestamps)PTS:播放时间戳,以PCR为标准(presentationtimestamps)名词解释2PSI:描述TS流的瞬时结构的表集合(programspecificinformation)PID:标识TS子流的一个唯一数字(packetidentifier)PAT:节目联合表(programassociationtable),用来检索和定位TS流中的节目,PAT表的PID值永远为0x0000PMT节目映射表(programmaptables),对特定节目检索子流CAT条件接受表(conditionalaccesstable),用于需要认证的环境,CAT表的PID值永远为0x0001PES协议格式PES头格式(6Byte):1.同步字节:3Byte,固定为0000012.起始码标志:1个Byte,说明负载类型(如视频、音频)3.包长度:2Byte,表示负载的长度。PESheaderOptionalPESheader6ByteHeaderMax.64kbytepayloadmax.64kbyte+63bytestartcodeprefix000001StreamIDPESpacketlengthPES协议格式可选PES头:PES头的可选扩展,根据当前传送ES流的要求设置。由12个比特的11个标志来控制可选PES头中包含哪些字段,其中有PTS和DTS,这对视/音频同步非常重要。最后可能有填充字节。PESheaderOptionalPESheader6ByteHeaderMax.64kbytepayloadmax.64kbyte+6PESScramblingcontrol11flagsPESheaderDatalengthOptionalFieldsDependingonflagsStuffingBytes,,FF’’“10’’PES协议格式可选PES域PTS存在否DTS存在否基本流时钟基准(ElementaryStreamClockReference,ESCR)基本流速率信息(ESrate)数字存储媒体(DigitalStorageMedia,DSM)信息BitPESheaderOptionalPESheaer6ByteHeaderMax.64kbytepayloadmax.64kbyte+6PTSDTSESCRESrateDSMTrickmodeAdditionalCopyInfoPreviousPESCRCPESextension333342228816PES的几点说明每个PES包最大64kBytes,对于极少数负载超过64k的PES报文,PES头中的长度字段被赋值为0。PES封装本身并未规定如何对ES流的数据进行分割,但是由于其包头扩展域中的PTS/DTS字段对于单独一帧才有意义,因此经常将一个完整的视/音频帧封装在一个PES包中。所谓一个视频帧是指I/B/P帧,一般一个I帧足够可以存放。可以自己计算下,1.6Mpbs,25帧/秒。一个PES流的内容具有单一性,PES协议本身不关心多个流之间的同步。PES是MPEG数据流的基本封装协议,不管本地播放格式(PS)还是实时传输流格式(TS)其负载内容都为PES流MPEG-2TS协议的作用实现可靠的远程传输PES包长度过大64Kbytes,不利于在传输信道上发送、校验、纠错实现多路流的复用PES流不支持复用,难以实现音视频同步播放、多画面播放等功能实现传输和播放的实时性PES流不支持播放端与发送端的时间同步,远程播放时也无法做到在流中任意一点开始播放。TS流的传输特性报文长度短(188Bytes或204Bytes)适应多种底层传输协议和传输信道为了解码方便,打包TS时PES头一般在TS负载的开头。TS是PES的分割,多个TS组成一个PES。PESheaderPESheaderPacketizedelementarysystemTransportstreamPayloadunitstartindicator=14byteTSheader184bytepayloadPayloadUnitstartIndicator=1TS流的复用特性支持一路节目的多流复用被复用的多个流用PID值进行区分Pid=0x000033VideopesAUDIOPESPacketizedelementarysystemTransportstreamPid=0x000032Pid=0x000032Pid=0x000032VideoPESAudioPESVAVVTS流的复用特性支持多路节目的合成复用复用的节目通过节目编号(programID)进行标识,该信息在PAT表中传送EncoderVideo1EncoderEncoderVideo2Video3Audio1Audio2Audio3Program1Program2Program3MPEG-2MultiplexerTS流的实时特性TS流通过每隔一定的时间(25/帧一般为40ms)发送PCR来实现远程时间同步一个节目有且仅有一个PID所代表的TS子流中含有PCR同步信息,该PID在PMT表中给出视频音频帧播放与否的依据为该帧PTS=last_pcr最后一次时钟同步+tv_offset最后一次时钟偏移量视频音频帧解码与否的依据为该帧DTS=last_pcr+tv_offset若某帧中无PTS/DTS,则收到该帧后立刻解码播放,但是实际中播放常常会出问题PCR的精度为27MHz,PTS/DTS的精度为90KHz90KHz*3=27MHzTS流的复用结构信息被定期封装在PAT/PMT等表中传送(一般小于500ms)TS协议格式TS固定长度188字节,4字节头和184字节负载,协议头如下:1.1Byte同步字节,固定为0x472.1bit传输错误标识TEI(解调器在收取数据后根据校验结果置位),IP传输中这位时钟是0,因为这位是解码器是解析的,在IP网络中解码不可见,无意义。3.2bit控制(1bit有效载荷标识,1bit传输优先标识)4.13bit的PID(packetidentifier)5.4bit控制位(2bit传输加扰标识(CAT)和2bit自适应控制(PCR同步使用))6.4bit连续计数器(0-15循环编号):一个IP共7个TS,0-15只有3个IP不到。184bytepayload188bytes4byteTSheader13bitpacketidentifier=PID1bittransporterrorindicator1bytesyncbyte=47hexTS协议格式若前文提到的自适应控制位为真,则在TS头之后有自适应头:1.1Byte自适应区长2.1Byte自适应区内容标识(每一个bit位代表一种自适应区内容字段类型,其中最重要的为PCRflag)TS的误码保护TS包的188字节后可能加上16或20字节的保护码一般采用的误码保护是Reed-Solomon纠错码误码保护是特殊的校验和纠错能力在8-10个码元(bit)。注意:IPTV的误码保护没有在TS层面进行FEC,是在RTP。4byteheader184bytepayload16or20byteRSFEC204or208byte188byteTS流的解析5个0x47后同步完成,同步的5个包都不作解析。不符合重新计算5个。解析PAT表得到节目列表和每个节目对应PMT的PID号解析PMT表得到每个节目对应的子流集合如传输加扰标识为真等待CAT表以认证身份连续三个间隔40ms以内的PCR能建立节目同步MPEG-2TS流PAT表每个TS流一个,每隔500ms重新PAT发送。描述TS流中有多少个节目,每个节目用programID标识。包含该表的TS包的PID为0,便于识别。PAT的payload中传送特殊PID的列表,每个PID对应一个节目的PMT表。在没有收到PID=0x00的PAT表之前,TS解码器不做任何事PID1PID2PID3PID4…..PayloadofTSpacketTSheaderPID=0x00PointertoPMT1PointertoPMT2PointertoPMT3PointertoPMT4MPEG-2TS流PMT表每个节目一个,每500ms重新发送一次PMT的PID由PAT传送。例如要接收节目3时,先从PAT的payload中的所有PID列表中选出节目3的PID为1FF3hex,然后查找包头中PID=1FF3hex的TS包,就是节目3的PMT。PMT包含该节目中所有ES流(视频、音频或数据)的PID。PID1PID2PIDfromPATTSheaderPayloadofTSpacket……PointertovideoESPointertoaudioESPMT=Programmaptable1PIDentryperelementarystreamMPEG-2TSCAT表CAT表在TS流需要认证或解密时出现若加扰控制为真,则在收到CAT表之前解码器不做任何事CAT表的PID固定,为0x01CAT提供了TS流其他数据包的PID,该数据包传送了解扰所需信息:1.ECM(entitlementcontrolmessage)用于传送加扰码2.EMM(entitlementmanagementmessage)用于用户管理CAT(PID=1)PIDPIDECMEntitlementcontrolmessagesEMMEntitlementManageme