MMC实验四.docx
- 文档编号:17870806
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:35
- 大小:904.54KB
MMC实验四.docx
《MMC实验四.docx》由会员分享,可在线阅读,更多相关《MMC实验四.docx(35页珍藏版)》请在冰点文库上搜索。
MMC实验四
中国科学技术大学
实验报告
课程:
多媒体通信技术
题目:
MPEG-2TS格式码流解析
姓名:
学号:
院系:
目录
一、实验内容1
二、参考资料1
三、实验原理1
3.1背景1
3.2基本概念1
3.2.1基本格式码流1
3.2.2分组的ES流2
3.2.3显示/解码时间标记2
3.2.4节目流2
3.2.5传输流2
3.2.6传输流的性质3
3.3TS码流的形成3
3.3.1码流形成过程3
3.3.2传输流的封装3
3.4TS包的包结构4
3.4.1TS包头结构[1]4
3.4.2TS包净荷部分5
3.5TS流的解析6
3.5.1节目专用信息6
3.5.2TS流的解析7
3.6MPEG-TS流分析工具11
3.6.1MPEG-2TSpacketanalyser11
3.6.2EasyICE12
4.实验过程及结果分析13
4.1实验源数据13
4.2实验数据以及结果分析13
4.2.1节目信息13
4.2.2PSI信息14
4.2.3各个不同数据的比例15
4.2.4关键图表17
4.2.5数据包分析18
5实验总结20
5.1结论重述20
5.2总结20
6参考文献21
7.附录21
7.1PAT与PMT解析的关键代码21
MPEG-2TS格式码流解析
一、实验内容
1.调研可用的工具或源代码
2.对特定的TS文件流进行分析,给出TS流中不同媒体类型数据的统计信息,如TS比特流中含有多少个媒体流,各个媒体流所占的比例等
二、参考资料
1.MPEG-2TransportStreamPacketAnalyser
2.MPEG-2TSDecoder
3.TS文件下载
三、实验原理
3.1背景
MPEG组织于1994年推出MPEG-2压缩标准,以实现视/音频服务与应用互操作的可能性,MPEG-2标准是针对标准数字电视和高清晰度电视在各种应用下的压缩方案和系统层的详细规定。
对应于不同的应用,符合MPEG-2标准的码流又分为传送流(TransportStream,TS)和节目(ProgramStream,PS)流。
在MPEG-II标准中,为了将一个或更多的音频、视频或其他的基本数据流合成单个或多个数据流,以适应于存储和传送,必须对其重新进行打包编码,在码流中还需插入各种时间标记、系统控制等信息,最后送到信道编码与调制器。
这样可以形成两种数据流——传送流(TS)和程序流(PS)。
3.2基本概念
3.2.1基本格式码流
ES(ElementaryStreams,基本流),是直接从编码器输出来的数据流,可以是编码过的视频数据流(H.264,MJPEG等)、音频数据流(如AdvancedAudioCoding,AAC),或其他编码数据流的统称。
ES流经过PES打包器之后,被转换成PES包。
ES是只包含一种内容的数据流,如只含视频或只含音频等,打包之后的PES也是只含一种性质的ES,如只含视频ES的PES,只含音频ES的PES等。
每个ES都由若干个存取单元(AccessUnit,AU)组成,每个视频AU或音频AU都是由头部和编码数据两部分组成,1个AU相当于编码的1幅视频图像或1个音频帧,也可以说,每个AU实际上是编码数据流的显示单元,即相当于解码的1幅视频图像或1个音频帧的取样。
3.2.2分组的ES流
PES码流(Packetized Elementary Streams,分组的ES流)。
ES形成的分组称为PES分组,是用来传递ES的一种数据结构。
PES流是ES流经过PES打包器处理后形成的数据流,在这个过程中完成了将ES流分组、打包、加入包头信息等操作(对ES流的第一次打包)。
PES流的基本单位是PES包。
每个PES包都由包头和负载(payload)组成。
3.2.3显示/解码时间标记
PTS(PresentationTimeStamp,显示时间标记),表示显示单元出现在系统目标解码器(H.264、MJPEG等)的时间。
DTS(DecodingTimeStamp,解码时间标记),表示将存取单元全部字节从解码缓存器移走的时间。
PTS/DTS是打在PES包的包头里面的,这两个参数是解决音视频同步显示,防止解码器输入缓存上溢或下溢的关键。
每一个I(关键帧)、P(预测帧)、B(双向预测帧)帧的包头都有一个PTS和DTS,但PTS与DTS对于B帧不一样,无需标出B帧的DTS,对于I帧和P帧,显示前一定要存储于视频解码器的重新排序缓存器中,经过延迟(重新排序)后再显示,所以一定要分别标明PTS和DTS。
3.2.4节目流
PS(ProgramStream,节目流),PS流由PS包组成,而一个PS包又由若干个PES包组成(到这里,ES经过了两层的封装)。
PS包的包头中包含了同步信息与时钟恢复信息。
一个PS包最多可以包含具有同一时钟基准的16个视频PES包和32个音频PES包。
3.2.5传输流
TS(TransportStream,传输流),TS流由定长的TS包组成(188字节),而TS包是对PES包的一个重新封装(到这里,ES也经过了两层的封装)。
PES包的包头信息依然存在于TS包中。
TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度的。
PS包由于长度是变化的,一旦丢失某一PS包的同步信息,接收机就会进入失步状态,从而导致严重的信息丢失事件。
而TS码流由于采用了固定长度的包结构,当传输误码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。
因此在信道环境较为恶劣、传输误码较高时一般采用TS码流,而在信道环境较好、传输误码较低时一般采用PS码流。
3.2.6传输流的性质
单一性:
TS流的基本组成单位是长度为188字节的TS包。
混合性:
TS流由多种数据组合而成,一个TS包中的数据可以是视频数据,音频数据,填充数据,PSI/SI表格数据等(唯一的PID对应)。
3.3TS码流的形成
3.3.1码流形成过程
图3.3.1MPEG-2系统层结构流程图[1][2]
1)A/D转化后,通过MPEG-2压缩得到的ES基本流。
这个数据流很大,并且只是I,P,B的这些视频帧或者音频取样信息。
2)通过PES打包器,打包并在每个帧中插入PTS/DTS标志,变成PES。
原来是流的格式,现在成了数据包的分隔形式。
3)PES根据需要打包成PS或TS包进行存储(DVD)或传输(DVB)。
因每路音/视频只包含一路的编码数据流,所以每路PES也只包含相应的数据流。
3.3.2传输流的封装
MPEG-2系统层规定,一个PES包必须由整数个TS包传送。
从图3.3.2可见可变长度的PES包被封装到恒定长度的TS包(4个字节的TS包头和184个字节的TS净荷)中,封装过程如下:
首先PES的头(包括起始码和包头)被封装到一个TS包的净荷开始部分,少于184个字节的部分被开始的PES净荷占据,剩余的PES净荷被划分成大小为184个字节的块,填充到接下来的TS包的净荷中,PES
图3.3.2TS流的打包过程
包净荷的结尾通过填充合适大小的自适应填充数据来对齐,也就是说PES的头一定开始与TS包净荷的开始部分[3]。
因此,总结如下:
1)TS流由定长的TS包组成(188字节,包含4个字节的包头),而TS包是对PES包的一个重新封装(到这里,ES经过了两层的封装)。
2)PES包的包头信息依然存在于TS包中
3.4TS包的包结构
图3.4.1TS包结构
在TS码流中,每个TS包长度固定,为188字节,其中包括包头4字节,有效载荷区(包括自适应区)184字节。
包头以及整个包的结构信息如图3.4.1所示[4]。
3.4.1TS包头结构[1]
TS的包头由同步字节、传输误码指示符、有效载荷单元起始指示符、传输优先、包识别(PID-PacketIdentification)、传输加扰控制、自适应区控制以及连续计数器8个部分组成。
其中:
1)同步字节固定为)0x47,利用其自动相关特性,可以检测数据流中的包限制,建立包同步;
2)传输误码指示符,是指有不能消除误码时,采用误码校正解码器可表示1bit的误码,但无法校正。
‘1’表示在相关的传输包中至少有一个不可纠正的错误位。
当被置1后,在错误被纠正之前不能重置为0;
3)有效载荷单元起始指示符,表示该数据包是否存在确定的起始信息。
在TS净荷中包含PES时,该标志位的意义是,‘1’表示TS包的净荷以PES的首字节开始,有且仅有一个PES包在TS的净荷开始,‘0’表示该TS包的净荷不以PES开始;在TS净荷包含PSI时,‘1’表示TS包的净荷以PSI段的第一个字节开始,反之为0。
注意:
在3)有效载荷单元起始指示符为‘1’时,在前4个字节后会有一个调整字节。
4)传输优先,是给TS包分配优先权。
‘1’表明优先级比其他具有相同PID但此位没有被置‘1’的分组高。
5)PID:
指示存储与分组有效负载中数据的类型。
PID值是由用户确定的,解码器根据PID将TS上从不同ES来的TS包区别出来,以重建原来的ES。
其中值0x0000—0x000F保留,0x0000为PAT保留;0x0001为CAT保留;0x1fff为分组保留,即空包。
6)传输加扰控制,可指示数据包内容是否加扰,但包头和自适应区永远不加扰,对空的包该字段为“00”,同时置为“00”也意味着不加扰,置为“01”为保留,置为“10”为采用偶密钥加扰,置为“11”为采用奇密钥加扰,对于PES包采用相同的指示;
7)自适应区控制,用2bit表示TS包头后面是否自适应区,该字段置“00”为保留,标准解码器会丢弃改包,“01”表示没有适应区仅有有效负载,“10”表示仅有自适应区无有效负载,“11”表示有有效负载和自适应区,如果有适应域则位于TS包净荷的开始部分;
8)连续计数器:
可对PID包传送顺序计数,随着每一个具有相同PID的TS流分组而增加,当它达到最大值后又回复到0,范围为0~15。
接收端根据计数器读数判断是否有包丢失及包传送顺序错误。
显然,包头对TS包具有同步、识别、检错及加密功能。
3.4.2TS包净荷部分
TS包中净荷所传输的信息包括两种类型:
1)视频、音频的PES包以及辅助数据;
2)节目专用信息(ProgramSpecificInformation,PSI)。
当然,TS包也可以是空包。
空包用来填充TS流,可能在重新进行多路复用时被插入或删除。
在系统复用时,视频、音频的ES流需进行打包形成视频、音频的PES流,辅助数据(如图文电视信息)不需要打成PES包。
PES包非定长,音频的PES包小于等于64k比特,视频的一般为一帧一个PES包。
一帧图象的PES包通常要由许多个TS包来传输。
MPEG-2中规定,一个PES包必须由整数个TS包来传输。
如果承载一个PES包的最后一个TS包没能装满,则用填充字节来填满;当下一个新的PES包形成时,需用新的TS包来开始传输。
3.5TS流的解析
现在标准实际的传输频道的带宽常大于一路数字电视节目信的带宽,为提高频道资源的利用率,需要将多路节目复用在一起进行传输,此外当数字电视在通信网中进行传输时,动态的多节目复用/解复用也是不可避免的,这种多路节目的复用称为系统级复用,PAT描述了系统级复用中传输每路节目PMT的码流的PID值。
在进行TS流复用时,各路ES流被分配了唯一的PID,ES流与被分配
的PID值的关系构成一张表,称为节目映射表PMT,PMT完整地描述了一路节目是由哪些ES流组成的、它们的PID分别是什么等。
所以在解析时首先得确定各个节目的映射情况。
3.5.1节目专用信息
为了管理各种类型的TS数据包,需要有些特殊的TS包来确立各个TS数据包之间的关系。
这些特殊的TS包里所包含的信息就是节目专用信息。
在不同的标准中它有不同的名字:
1)MPEG-2中称为PSI(ProgramSpecificInformation,即节目专用信息);
2)DVB标准根据实际需要,对PSI扩展,称为SI信息;
3)ATSC标准中为PSIP信息。
MPEG-2中,规定的对PSI信息的描述方法有以下几种:
1)表Table:
节目信息的结构性的描述;
(1)节目关联表ProgramAssociationTable(PAT),对应包头PID字段为0x0000。
PAT是PSI信息的根节点,要查找节目播放的信息必须从PAT开始,PAT中包含了TS中所有节目的完整列表,每个表项包括ServiceID和PMT(用于播放)的PID,PAT中ServiceID为0的表项表示NIT;
(2)节目映射表ProgramMapTables(PMT),PMT提供了一个节目的ServiceID和用于播放的所有资源信息,例如音视频PID,PCR,字幕PID等,简单地说,PMT完整地描述了一路节目是由哪些PES组成,给播放提供相应的资源;
(3)条件接收表ConditionalAccessTable(CAT),PID字段为0x0001。
CAT提供了一个或多个CA系统及其授权管理信息,用于节目的解扰工作,如果在一个TS中任何原始流进行了加密处理,那么在TS中一定要插入CAT;
(4)网络信息表NetworkInformationTable(NIT),PID字段为0x0010。
NIT描述了一个DVB传输通道的所有物理参数,包括传输路径(卫星、电缆、地面)、接收频率、调制类型、误码保护以及传输参数;
(5)传送流描述表TransportStreamDescriptionTable(TSDT);
2)节/段Section:
将表格的内容映射到TS流中;
3)描述符Descriptor:
提供有关节目构成(视频流、音频流、语言、层次、系统和码率等多方面)的信息。
3.5.2TS流的解析
由3.5.1可知,如果找到了TS流中的PAT表,再根据PAT表找到PMT表,然后建立各个节目的映射情况,就可以对TS流进行解析。
每一个TS包都带有PID,系统就是根据这个PID来找对应的TS包;对于包含音视频数据(PES包)的TS包,系统通过TS的PID找到对应TS数据包,提取其中的数据组合成节目的音视频;对于携带PSI/SI等数据的TS包,系统通过TS的PID找到对应TS数据包,提取各个PSI/SI数据表格,用来指导系统。
有了TS的PID后,如果TS包携带的是PSI/SI等表格的Section数据时,有时还不能确定该PID的TS包中携带的数据是什么,SDT、BAT、ST等表传送时,都用的是PID为0X0011的TS数据包,对于这种携带PSI/SISection单元的TS包,对应的数据(表的Section语法中)还有一个TABLE_ID字段,用来可以确定是具体的什么表。
TS中部分PID以及TABLE_ID用来固定传输某些数据内容,部分分配如表3.5.1所示。
部分TABLE的PID以及TABLE_ID分配
表3.5.1
表TABLE
PID值
TABLE_ID
PAT
0x0000
0x00
PMT
0x0020-0x1FFE
0x02
CAT
0x0001
0x01
DST
0x0011
0x42-0x46
NIT
0x0010
0x40,0x41
我们可以根据PAT和PMT的表结构重建各个节目的信息,PAT结构和PMT结构定义如表3.5.2和表3.5.3所示。
PAT结构信息
表3.5.2
结构体成员
长度(bits)
备注
table_id
8
1个字节,固定为0x00
section_syntax_indicator
1
固定‘1’
第2、3个字节
‘0’
1
固定’0’
reserved
2
保留位
section_length
12
表示这个字节后面有用的字节数,包括CRC32
transport_stream_id
16
该传输流的ID
第4、5个字节
reserved
2
保留位
第6个字节
version_number
5
PAT的版本号
current_next_indicator
1
发送的PAT是当前有效还是下一个PAT有效
section_number
8
分段
的号码
第7个字节
last_section_number
8
最后一个分段的号码
第8个字节
循环开始
program_number
16
节目号
2个字节
reserved
3
保留
2个字节
network_id(节目号为0)
program_map_PID(节目号为其他时)
13
节目号位0时对应的PID为NID,其他则为PMT的PID
循环结束
CRC_32
32
4个字节
PMT表信息
表3.5.3
结构体成员
长度(bits)
备注
table_id
8
第1个字节,固定为0x02
section_syntax_indicator
1
固定为‘1’
第2、3个字节
‘0’
1
固定为’1’
reserved
2
‘11’
section_length
12
首先两位bit置为00,它指示段的byte数,由段长度域开始,包含CRC。
transport_stream_id
16
指出该节目对应于可应用的ProgrammapPID
第4、5个字节
reserved
2
‘11’
第6个
字节
version_number
5
指出TS流中Programmapsection的版本号
current_next_indicator
1
当该位置1时,当前传送的Programmapsection可用
section_number
8
固定为0x00
第7个
字节
last_section_number
8
固定为0x00
第8个
字节
reserved
3
固定为’111’
第9、10个字节
PCR_PID
13
指明TS包的PID值,该TS包含有PCR域
reserved
4
预留为0x0F
第11、12个字节
program_info_length
12
前两位bit为00。
该域指出跟随其后对节目信息的描述的byte数
循环:
descriptor()(0-N)
循环开始(0-N1)
stream_type
8
流类型,标志是Video还是Audio,还是其他数据
1个字节
reserved
3
‘111’
2个字节
elementary_PID
13
该节目中包括的视频流,音频流等对应的TS分组的PID
reserved
4
‘1111’
2个字节
ES_info_length
12
前两位bit为00。
该域指示跟随其后的描述相关节目元素的byte数
循环:
descriptor()(0-N2)
循环结束
CRC_32
32
4个字节
其中,PMT字段流类型占一个字节,其分配关系如表3.5.4[1]。
流类型分配表
表3.5.4
Value
Description
0x00
ITUT|ISO/IECReserved
0x01
ISO/IEC11172-2Video
0x02
ITUTRec.H.262|ISO/IEC13818-2VideoorISO/IEC11172-2constrainedparametervideostream
0x03
ISO/IEC11172-3Audio
0x04
ISO/IEC13818-3Audio
0x05
ITUTRec.H.222.0|ISO/IEC13818-1reserved
0x06
ITUTRec.H.222.0|ISO/IEC13818-1PESpacketscontainingprivatedata
0x07
ISO/IEC13522MHEG
0x08
ITUTRec.H.222.0|ISO/IEC13818-1AnnexADSMCC
0x09
ITUTRec.H.222.1
0x0A
ISO/IEC13818-6typeA
0x0B
ISO/IEC13818-6typeB
0x0C
ISO/IEC13818-6typeC
0x0D
ISO/IEC13818-6typeD
0x0E
ISO/IEC13818-1auxiliary
0x0F-0x7F
ITUTRec.H.222.0|ISO/IEC13818-1reserved
0x80-0xFF
Userprivate
3.6MPEG-TS流分析工具
3.6.1MPEG-2TSpacketanalyser
MPEG-2TSpacketanalyser能够对ISO/DVB/AVCHD传输流进行解码和底层分析,可用于查错、装备和系统测试,软件开发并研究数字电视系统工作原理。
软件打开界面如图3.6.1所示。
可以看见,该软件提供过滤查找(Filter)的功能,不过该软件不能直接播放视频。
图3.6.1MPEG-2TSpacketanalyser界面
图3.6.2TOOL下PID的列出
图3.6.3TOOL下PID的列出
图3.6.2展示在TOOL下可以查看整个TS文件的PID信息,如各个PID代表的业务出现的次数以及它们占总包数的比例,点击“ShowPIDlist”便可以得到的PID列表如图3.6.3所示。
,例如可以看到PID为0的TS包,也就是PAT信息,出现了49次,占总的TS流的0.04%。
3.6.2EasyICE
本程序是一款TS文件静态分析工具,支持188/204、单路/多路节目mpeg2/h.264,分析模块齐全,支持特大文件,并具有一流的处理速度。
其主要功能的包括媒体播放,媒体详细信息,PID统计,同步分析、GOP统计、码率变化分析,PSI/SI解析,TS包列表、十六进制显示,TS头,调整字段,PES首部解析等[5]。
图3.6.4展示时EasyICE打开.TS文件的界面。
我们可以查看直接在控制面板点击感兴趣的信息进入查看。
通过比较,发现EasyICE集成度较MPEG-2TSpacketanalyser高,界面更为友好,提供的信息更加全面,因此,本次实验中选用EasyICE来对TS流进行解析。
3.6.4EasyICE软件界面
4.实验过程及结果分析
4.1实验源数据
本次实验数据来自与,将其下载到本地目录E:
\科大\学科资料\多媒体通信\实验_MPEG2_TS格式码流解析下,然后使用EasyICE软件进行解析。
4.2实验数据以及结果分析
实验中,观察了TS流的节目信息,媒体信息、PSI/SI信息、PID、TS数据包等数字信息以及时间戳、码率抖动等图标信息,最终得到该TS文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MMC 实验