ts码流结构分析
- 格式:ppt
- 大小:2.05 MB
- 文档页数:46


【精品博文】TS流(6)——TS流文件分析
通过前面的描述,我们清楚,一个基本的TS流应该包括PAT,PMT,PES,PCR 4种类型的包(若PCR信息被指定在PES类型包中,则只需三种基本类型。
总之PCR信息不可缺少)。
另外,PTS因素也是必备的。
有了这些信息,就可以组成一个基本的TS流了。
下面我将给出我的TS流编码出来的一个最基本的TS流,并加以分析,完整文件会以附件形式放在文章最后。
输入数据是一段小黄人视频,格式为h264。
输出文件如下:
1,PAT分析
2,PMT分析
3,PCR分析
4,PES分析
5,文件测试
将编码号的TS文件用播放器播放,正常播放:
也可以利用EasyICE等TS流分析软件来进行解码分析,我的文件分析后存在PCR精度错误,暂不确定原因和解决办法。
其余正常。
TS
流所有篇章到此就告一段落了!。
PSI、TS流总结PSI、TS流总结分类: iptv 2014-01-09 20:03 1391人阅读评论(3) 收藏举报ES:由编码器输出,可以是编码过的视频数据流,音频数据流,或其他编码数据流。
ES流经过PES打包器之后,被转换成PES包。
PES包由包头和payload组成。
PSI:MPEG-2中定义了PSI(Program Specific Information)信息,其作用是从一个携带多个节目的某一个TS流中正确找到特定的节目。
PSI表:PSI表包括节目关联表(PAT)、条件接收表(CAT)、节目映射表(PMT)和网络信息表(NIT)组成。
当机顶盒要要接收某一个指定节目流程:1. 首先从节目关联表(PAT)中取得这个节目的节目映射表(PMT)的PID值2. 然后从TS流中找出与此PID值相对应的节目映射表(PMT),从这个节目映射表中获得构成这个节目的基本码流的PID 值3. 根据这个PID值滤出相应的视频、音频和数据等基本码流4. 解码后复原为原始信号,删除含有其余PID的传送包。
TS是经过节目复用和传输复用两层完成的,即在节目复用时,加入了PMT,在传输复用时,加入了PAT。
同样在节目解复用时,可以得到PMT,在传输解复用时,可以得到PAT。
一、 PAT表节目关联表PAT的PID为0x0000,包括该TS流中的所有节目映射表即每个节目的PMT PID,传输流ID等。
二、PMT表节目映射表(PMT)中包括每个节目的基本码流信息即视频信息、音频信息和同密的多家CA的ECM授权控制信息。
PMT表针对节目的加密情况,还含有CA_System_ID。
用于节目是用何种CA系统加密和ECM_PID用于告知用户如何搜索ECM。
1. PSI依然是"根",只有定位到PSI表后,才能索引出PAT,和各个节目的PMT表。
2. PAT表记录了什么呢?表头信息和节目信息。
》表头信息包含若干字段,但最关键的是version_number,why?因为TS流里任何节目信息的变化,这个字段都会往上递加,从而使得TS解码器可以据此让Decoder对不同节目做解码复位。
HLS,Http Live Streaming是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP 协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。
1、M3U8文件用文本方式对媒体文件进行描述,由一系列标签组成。
#EXTM3U#EXT-X-TARGETDURATION:5#EXTINF:5,./0.ts#EXTINF:5,./1.ts#EXTM3U:每个M3U8文件第一行必须是这个tag。
#EXT-X-TARGETDURATION:指定最大的媒体段时间长度(秒),#EXTINF中指定的时间长度必须小于或等于这个最大值。
该值只能出现一次。
#EXTINF:描述单个媒体文件的长度。
后面为媒体文件,如./0.ts2、ts文件ts文件为传输流文件,视频编码主要格式h264/mpeg4,音频为acc/MP3。
ts文件分为三层:ts层Transport Stream、pes层 Packet Elemental Stream、es层 Elementary Stream. es层就是音视频数据,pes层是在音视频数据上加了时间戳等对数据帧的说明信息,ts层就是在pes层加入数据流的识别和传输必须的信息注:详解如下(1)ts层ts包大小固定为188字节,ts层分为三个部分:ts header、adaptation field、payload。
ts header固定4个字节;adaptation field可能存在也可能不存在,主要作用是给不足188字节的数据做填充;payload是pes 数据。
ts headerts层的内容是通过PID值来标识的,主要内容包括:PAT表、PMT表、音频流、视频流。
解析ts流要先找到PAT表,只要找到PAT就可以找到PMT,然后就可以找到音视频流了。
PAT表的PID值固定为0。
PAT表和PMT表需要定期插入ts流,因为用户随时可能加入ts流,这个间隔比较小,通常每隔几个视频帧就要加入PAT和PMT。
MPEG2-TS打包AAC码流:MPEG-2系统任务包括:1、规定以包传输数据的协议,2、规定收发两端数据流同步协议,3、提供多个数据流复用和解复用协议,4、提供数据流加密协议。
该系统的要点是以包形式存储与传送数据流。
MPEG-2标准主要规定了传输流(TS)和程序流(PS)两种结构。
Transport Stream (传输流),则主要应用于实时传送的节目,比如实时广播的电视节目。
Program Stream主要应用于存储的具有固定时长的节目,如DVD电影,可添加字幕等一些程序操作。
二者的区别在于,TS流的包结构是定长的,而PS流的包结构是变长的。
简单的说,你将DVD上的VOB文件的前面一截cut掉(或者干脆就是数据损坏),那么就会导致整个文件无法解码了,而电视节目是你任何时候打开电视机都能解码(收看)的,所以,MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。
TS码流由于采用了固定长度的包结构,当传输误码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。
因此在信道环境较为恶劣、传输误码较高时一般采用TS码流。
TS格式是一种较为先进的“封装格式”,BD蓝光原盘即采用TS封装,它在视频和音频打包时提供时间戳,保证了任何时间段(分离)的音画同步,TS封装支持几乎所有编码的高清视频和音轨编码。
本文的目的是将AAC编码出来的码流进行TS封装,具体过程是:AAC编码出来的码流属于基本流(Elementary Stream,ES);基本流加上PES头部信息打包形成打包的基本流PES,PES头部信息包含显示时间戳PTS和解码时间戳DTS;打包的基本流加上TS头部信息和系统信息后再分割成固定长度的包,就形成了传输流。
当然也可以进一步打包成RTP以便进行网络实时传输。
如下图:将ES流加上PES头部信息打包形成PES流,PES包的长度不是固定的,但是音频PES 包一般不超过64字节,视频一般一帧一个PES包,一个PES包由包起始码,包头和净荷组成,包起始码长度是固定的9个字节,PES包如下图:其中,PES Packet Length(PES包长度)表明该PES包的具体长度(尽管该值不是固定的),该长度域占两个字节,即16bit,因此该包的最大长度是65535字节,上面已经提到,用于音频码流时,该包长不超过64字节,而用于视频时一般一帧一包。