ts流解析规则
TS流简介
PES (Packetized Elementary Stream):将ES流分组打包后,在每
调整字段包、PCR
音频视频的同步
编码器中有一个系统时钟(其频率是27MHz),此时钟用来产生指示音 视频的正确显示和解码的时间标签,同时可用来指示在采样过程中系统 时钟本身的瞬时值。
PTS:指示音视频显示时间的时间标签。
DTS:指示音视频的解码时间标签。 PCR:指示系统时钟本身的瞬时值的时间标签。
传输流ts基础知识dvb小组有线数字电视数字电视机顶盒是一种将数字电视信号转换成模拟信号的变换设备它对经过数字化压缩的图像和声音信号进行解码还原产生模拟的视频和声音信号数字处理电视信号摸拟信号数字信号ts摸拟信号数字电视和摸拟电视的区别数字化编码视频编码压缩音频编码压缩视频数据音频数据打包器打包器eses辅助数据pespespests复用在原有的视频音频的基础上添加了辅助数据信息
A PES
V PES D PES
TS转输流
复用
数字电视节目的复用包括节目复用和信道复用.
节目复用
调制、解调
调制、解调 调制与解调是广播电视技术中最重要的技术之一。在传输广播电视信号时,通 常要在发送端对信号进行调制,在接收端再进行解调。 调制:低频信号不适合进行远距离传输,因此信号发送前必须经过调制,转换 为高频信号后才发送出去。 在发送端,将要传送的信息(称为调制信号)运载到高频率的交变电流(称为 载波)上的过程即为调制。
ts流解析原理
ts流解析原理TS流解析原理是指对TS(Transport Stream)流进行解析的过程,TS流是一种用于传输媒体数据的封装格式,常用于广播和卫星传输等领域。
TS流解析的主要步骤如下:1. TS包解析:TS流由一系列固定大小的TS包组成,每个TS包的大小为188字节。
TS包由头部和数据两部分组成,头部包含了一些基本的信息,如同步字节、计数器等。
解析器需要将每个TS包抽取出来,并解析其头部信息。
2. PID(Packet Identifier)解析:每个TS包中都包含一个PID字段,用于标识不同的数据包或流。
解析器需要根据PID字段的值将TS包中的数据分发到对应的处理模块。
3. PAT(Program Association Table)解析:PAT是TS流中的一个重要表格,用于指示包含在TS流中的其他表格的位置。
解析器首先需要解析出PAT表,获取到其他表格的PID值。
4. PMT(Program Map Table)解析:PMT表是TS流中的另一个重要表格,用于描述媒体流的相关信息,如音视频编码类型、PES(Packetized Elementary Stream)的PID等。
解析器需要根据PAT表获取到的PID值,解析出对应的PMT表。
5. PES解析:PES是TS流中常见的一种封装格式,用于封装音视频等媒体数据。
解析器需要根据PMT表中的PID值,解析出对应的PES数据。
6. 解码处理:解析器将解析出来的音视频等媒体数据交给相应的解码器进行解码,进一步处理和播放。
总的来说,TS流解析原理主要包括了对TS包、PID、PAT表、PMT表和PES数据的解析处理过程。
通过对TS流的解析,可以获取到媒体数据的相关信息,并进行进一步的处理和播放。
TS码流分析.ppt
100K CIF图像
100K CIF图像
带宽:8Mbps
传输速率:(8M/8bit)/100K=10(帧/s)
…
100K CIF图像
压缩后的数字图像数据的传输
100K CIF图像
信源编码 …
10K CIF图像
10K 带宽:8Mbps CIF图像
信道编码:提高传输可靠性
传输速率:(8M/8bit)/10K=100(帧/s)
我国使用的数字电视标准采用的就是DVB标准。
数字视频广播(DVB)系统的传输方式可以分为DVB-S系统(卫星广 播)、 DVB-C系统(有线电视)、 DVB-T系统(地面数字视频广播), DVB系统主要完成数字电视信号的广播与传输。
一、数字电视原理与DVB系统
DVB系统要求主要有: ※信源编码采用MPEG-2标准(即音视频压缩采用MPEG-2标准) ※信道编码中采用统一的加扰系统 ※信道编码中采用统一的里德-所罗门前向纠错系统 ※ ……..
※该“数字”概念的作用范畴: 数字电视中的“数字”概念是指电视信号的前期
一、数字电视与DVB系统
2、数字电视为什么采用信源编码和信道编码? 未经压缩的数字图像数据的传输
信源编码:提高有限带宽的利用率
※预测编码 ※统计编码 ※JPEG编码 ※MPEG编码 ※……..
…………
100K CIF图像
100K CIF图像
MPEG-2标准是MPEG和ISO组织设计的一个数字视频压缩规范,主要用于DVD 和DVB上。其设计目标是高级工业标准的图象质量以及更高的传输率。该标准包括 编号为13818-1系统部分、编号为13818-2的视频部分、编号为13818-3的音频部分 及编号为13818-4的符合性测试部分。
ts流 标准 -回复
ts流标准-回复什么是TS流(Transport Stream)?如何实现TS流的传输和播放?如今TS流在数字视频广播和流媒体传输中有何应用?接下来,我们将一步一步回答这些问题。
TS流(Transport Stream)是一种用于数字视频广播和流媒体传输的标准流媒体格式。
它是MPEG-2标准中定义的一种封装格式,用于将视频、音频和其他元数据按照特定的规则打包成一系列的数据包,以进行高效的传输和播放。
首先,我们需要了解TS流的基本结构和特点。
TS流采用分层和多路复用的方式来组织数据。
它由多个PID(Packet Identifier)所对应的数据包组成,每个PID可以承载不同类型(如视频、音频、字幕等)的数据。
这种分层结构使得TS流可以同时传输、解码和显示多路音视频流。
为了实现TS流的传输和播放,需要使用一些特定的工具和协议。
首先,需要一个流媒体服务器来提供TS流的分发和传输。
常用的流媒体服务器软件包括Wowza、Kurento、NGINX等。
这些服务器软件可以根据客户端的请求,向其发送相应的TS流数据。
在传输层,TS流一般使用TCP或UDP协议进行传输。
TCP协议可提供可靠的数据传输,适用于对数据完整性要求较高的场景;而UDP协议则提供了更低的延迟和更高的传输效率,适用于实时性要求较高的场景。
在播放端,需要使用支持TS流的播放器来解析和显示数据。
常见的TS流播放器有VLC、FFmpeg、Windows Media Player等。
这些播放器能够将接收到的TS流进行解封装,并按照其中的PID进行数据提取和解码。
然后,根据需要将视频画面和音频声音同步输出到屏幕和音箱上,实现完整的播放效果。
TS流在数字视频广播和流媒体传输中有着广泛的应用。
在数字电视广播领域,TS流被用于将多路电视频道同时通过有线或无线传输到电视机上。
利用TS流的分层和多路复用特点,可以在一个通道内传输多个节目,大大提高了频谱利用率。
视频知识基础:什么是TS、PS流
视频知识基础:什么是TS、PS流?在MPEG-2系统中,信息复合/分离的过程称为系统复接/分接,由视频,音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送流(TS:TransportStream)。
据传输媒体的质量不同,MPEG-2中定义了两种复合信息流:传送流(TS)和节目流(PS:ProgramStream)TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度的。
PS包与TS包在结构上的这种差异,导致了它们对传输误码具有不同的抵抗能力,因而应用的环境也有所不同。
TS码流由于采用了固定长度的包结构,当传输误码破坏了某一TS 包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。
而PS包由于长度是变化的,一旦某一PS包的同步信息丢失,接收机无法确定下一包的同步位置,就会造成失步,导致严重的信息丢失。
因此,在信道环境较为恶劣,传输误码较高时,一般采用TS码流;而在信道环境较好,传输误码较低时,一般采用PS 码流如DVD等等。
由于TS码流具有较强的抵抗传输误码的能力,因此目前在传输媒体中进行传输的MPEG-2码流基本上都采用了TS码流。
TS/PES是MPEG定义的标准格式,无论是MPEG1还是MPEG2都给出了包含比特流句法在内的定义,我们所说的TS/PS都是在这里定义的。
因此谈到TS/PS时仍然离不了MPEG,虽然A VS及IP的数据也可以封装在TS中,因为MPEG中给TS/PES的定义中允许封装其他数据。
虽然也许可以不经改变的将不同编码格式的码流经由TS/PS传送,但这事实上这是对MPEG的利用或扩充。
通常情况下,封装不同类型数据的时候我们需要在TS/PES添加标准的(如果有的话)或自定义的描述,并且在有些情况下原则上必须使用MPEG已经定义的特殊描述,TS/PES并非总是透明的。
简单说就是ps流(主要用在DVD上)如是中间丢了一断码流,后面的都没法播了;而TS流(DVB-T,DMB-TH等)如果断了码流,后面的随时可以再开始解码怎么看都行。
TS流解析
TS流解析关于TS流的解析TS即是" "的缩写他是分包发送的,每一个包长为字节在TS流里可以填入很多类型的数据,如视频、音频、自定义信息等他的包的结构为,包头为4个字节,负载为个字节工作形式:因为在TS流里可以填入很多种东西,所以有必要有一种机制来确定怎么来标识这些数据制定TS流标准的机构就规定了一些数据结构来定义比如: 表,所以解析起来就像这样: 先接收一个负载里为的数据包,在整个数据包里找到一个包的ID然后再接收一个含有的数据包,在这个数据包里找到有关填入数据类型的ID之后就在接收到的TS包里找含有这个ID的负载内容,这个内容就是填入的信息根据填入的数据类型的ID的不同,在TS流复合多种信息是可行的关键就是找到标识的ID号现在以一个例子来说明具体的操作:在开始之前先给出一片实际TS流例子:f32ch: 47 40 00 17 00 00 B0 0D 00 01 C1 00 00 00 01 E0 ; G???f33ch: 20 A2 C3 29 41 FF FF FF FF FF FF FF FF FF FF FF ; ⒚)A f34ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; f35ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; f36ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;f37ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;f38ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; f39ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; f3: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;f3: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;f3: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; f3: FF FF FF FF FF FF FF FF FF FF FF FF 47 40 20 17 ; G f3: 00 02 B0 1B 00 01 C1 00 00 E0 21 F0 00 1B E0 21 ; ????? f3: F0 04 2A 02 7E 1F 03 E0 22 F0 00 5D 16 BD 48 ; ?*~??]紿具体的分析就以这个例子来分析 // TS_TS__(TS__* ) {[4]; ( 4);->__ = [1] >> 7;->___ = [1] >> 6 & 0x01; ->_ = [1] >> 5 & 0x01; -> = ([1] & 0x1F) << 8 | [2]; ->__ =[3] >> 6; ->__ = [3] >> 4 & 0x03; ->_ =[3] & 0x03; }这是一个调整TS流数据包头的函数,这里牵扯到位段调整的问题现在看一下TS流数据包头的结构的定义:// TS__ {_ : 8; __ : 1; ___ : 1; _ : 1; : 13; __ : 2; __ : 2; _ : 4; } TS__;下面我们来分析,在/ -1里有说明,( )的值为0x00,TS包的标识(即_)为0x47,并且为了确保这个TS包里的数据有效,所以我们一开始查找47 40 00这三组16进制数,为什么这样?具体的奥秘在TS包的结构上,前面已经说了_固定为0x47现在往下看__、___、_和这四个元素,为0x00,这是的标识__为0,_为0把他们看成是两组8位16进制数就是:40 00现在看看我们的TS流片断例子,看来正好是47 40 00开头的,一个TS流的头部占据了4个字节剩下的负载部分的内容由来决定,例子看来就是一个表在这里有个地方需要注意一下,___为1时,在前4个字节之后会有一个调整字节,它的数值决定了负载内容的具体开始位置现在看例子中的数据47 40 00 17 00第五个字节是00,说明紧跟着00之后就是具体的负载内容下面给出表的结构体: //// TS_ {_id : 8; __ :1; : 1; _1 : 2; _ : 12; __id : 16; _2 : 2; _ : 5; __ : 1; _ : 8; __ : 8;_ : 16; _3 : 3;_ : 13; __ : 13;_32 : 32; } TS_;再给出表字段调整函数: //__ ( TS_ * * ) {n = 0 i = 0; = 0;->_id = [0];->__ = [1] >> 7; -> = [1] >> 6 & 0x1;->_1 = [1] >> 4 & 0x3;->_ = ([1] & 0x0F) << 8 | [2]; ->__id= [3] << 8 | [4]; ->_2 = [5] >> 6;->_ = [5] >> 1 & 0x1F; ->__ = ([5] << 7) >>7; ->_ = [6]; ->__ = [7]; // _32= 3 + ->_;->_32 = ([-4] & 0xFF) << 24 | ([-3] & 0xFF) << 16 | ([-2] &0xFF) << 8 | ([-1] & 0xFF);// _ __( n = 0; n < ->_ - 4; n ++ ) {->_ = [8] << 8 | [9]; ->_3 =[10] >> 5; ( ->_ == 0x0 )->_ = ([10] << 3) << 5 | [11]; {->__ = ([10] << 3) << 5 | [11]; } n +=5; } }通过上面的分析,例子中的数据00 B0 0D 00 01 C1 00 00 00 01 E0 20 A2 C3 29 41就是具体的表的内容,然后根据结构体来具体分析表但是我们需要注意的是在表里有_、_的元素不只有一个,这两个元素是通过循环来确定的循环的次数通过_元素的确定在这个例子中__为20,所以下面来分析时,就是查找47 40 20的开头的TS包下面来分析表,先给出( )的结构体: //// TS_ {_id : 8; __ :1; : 1; _1 : 2;_ : 12; _ : 16;_2 : 2; _ : 5;__ : 1; _ : 8; __ : 8;_3 : 3; _ : 13;_4 : 4; __ : 12;_ : 8; _5 : 3;_ : 13; _6 : 4;ES__ : 12; _32 : 32; }TS_;在给出调整字段函数: //__ ( TS_ * * ) {= 12 = 0; i = 0;->_id = [0];->__ = [1] >> 7; -> =[1] >> 6; ->_1 = [1] >> 4;->_ = ([1] & 0x0F) << 8 | [2]; ->_ = [3] << 8 | [4]; ->_2 = [5] >> 6;->_ = [5] >> 1 & 0x1F; ->__ =([5] << 7) >> 7; ->_ = [6]; ->__ = [7]; ->_3 = [8] >> 5;。
ts流 标准
ts流标准
TS流(Transport Stream)是一种在数字视频广播和存储中广
泛使用的、用于传输和处理音视频数据的标准。
它是MPEG-2
标准中定义的一种容器格式,主要用于将音视频数据打包和传输到接收端。
TS流采用分段的方式将音视频数据进行打包,并将每个分段
称为Packet。
每个Packet由一个特定长度的字节组成,其中
包含了音视频数据以及相关的控制信息。
传输过程中,这些Packet按照一定的顺序依次发送,并在接收端进行解析和播放。
TS流的主要特点包括:
1. 支持多路复用:TS流可以将多个音视频数据流复用在同一
个传输流中,从而实现多路数据的同时传输。
2. 容错性强:TS流通过在数据中添加冗余信息来保证数据传
输的可靠性,从而提高对传输异常的容错能力。
3. 灵活性高:TS流可以提供多种音视频编码方式的支持,同
时还可以加入私有的扩展信息和自定义的元数据。
4. 支持多种传输方式:TS流可以通过各种传输方式进行传输,包括广播、卫星传输、以太网传输等。
TS流广泛应用于数字电视、视频点播、IPTV以及视频监控等
领域,成为目前最主流的音视频传输格式之一。
TS流的解析
TS流的解析 TS即是"Transport Stream"的缩写。
他是分包发送的,每⼀个包长为188字节。
在TS流⾥可以填⼊很多类型的数据,如视频、⾳频、⾃定义信息等。
他的包的结构为,包头为4个字节,负载为184个字节(这184个字节不⼀定都是有效数据,有⼀些可能为填充数据)。
⼯作形式:因为在TS流⾥可以填⼊很多种东西,所以有必要有⼀种机制来确定怎么来标识这些数据。
制定TS流标准的机构就规定了⼀些数据结构来定义。
⽐如: PSI(Program Specific Information)表,所以解析起来就像这样: 先接收⼀个负载⾥为PAT的数据包,在整个数据包⾥找到⼀个PMT包的ID。
然后再接收⼀个含有PMT的数据包,在这个数据包⾥找到有关填⼊数据类型的ID。
之后就在接收到的TS包⾥找含有这个ID的负载内容,这个内容就是填⼊的信息。
根据填⼊的数据类型的ID的不同,在TS流复合多种信息是可⾏的。
关键就是找到标识的ID号。
现在以⼀个例⼦来说明具体的操作:在开始之前先给出⼀⽚实际TS流例⼦:0000f32ch: 47 40 00 17 00 00 B0 0D 00 01 C1 00 00 00 01 E0 ; G@....?..?...?0000f33ch: 20 A2 C3 29 41 FF FF FF FF FF FF FF FF FF FF FF ; ⒚)Aôôôôôôôôôôô0000f34ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f35ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f36ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f37ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f38ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f39ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f3ach: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f3bch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f3cch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f3dch: FF FF FF FF FF FF FF FF FF FF FF FF 47 40 20 17 ; ôôôôôôôôôôôôG@ .0000f3ech: 00 02 B0 1B 00 01 C1 00 00 E0 21 F0 00 1B E0 21 ; ..?..?.??.?0000f3fch: F0 04 2A 02 7E 1F 03 E0 22 F0 00 5D 16 BD 48 ; ?*.~..??].紿具体的分析就以这个例⼦来分析。
TS协议解析范文
TS协议解析范文TS(Transport Stream)协议是一种用于传输音视频数据的协议,主要用于广播和传输领域。
它是MPEG(Moving Picture Experts Group)组织制定的一种标准,用于在数字电视中传送视频和音频数据。
TS协议解析主要包括协议的基本介绍、协议格式、协议应用和协议的优势等方面。
下面将对TS协议进行详细解析。
一、基本介绍TS协议是一种用于传输音视频数据的协议,它的全称是Transport Stream。
TS协议最早是在数字广播和数字电视领域中应用的,后来也被广泛用于互联网传输领域。
TS协议是一种基于分组的传输协议,它将音视频数据分割成小的数据包进行传输。
每个数据包包含了以时间为基准的音视频帧数据。
二、协议格式1.数据包格式:每个数据包由188字节组成。
前4个字节是同步字节,用于标识数据包的起始位置。
紧接着的1个字节是传输错误指示位,用于指示数据包是否有错误。
接下来的1个字节是每个数据包的有效载荷单元开始指示位,用于指示有效载荷单元的开始位置。
剩下的184个字节是有效载荷单元。
2.数据包层次结构:每个数据包分为三个层次,包头、适配字段和有效负载。
包头的长度是4个字节,包含了同步字节和控制信息。
适配字段的长度是0~183个字节,用于对不同的数据包做适配处理。
有效负载包含了音视频数据。
3. 多路复用:在TS协议中,可以将多个音视频数据流进行多路复用,并通过PID(Packet ID)进行区分。
每个音视频数据流占用一个PID,并且在数据包的包头中进行标识。
接收端可以通过PID来识别不同的音视频数据。
三、协议应用1.数字广播:TS协议广泛应用于数字广播领域,例如地面数字电视、卫星数字电视和有线数字电视等。
在数字广播中,TS协议被用于将音视频数据进行传输,以提供高清晰度的视频和高音质的音频。
2.视频点播:TS协议也可以应用于视频点播领域。
在视频点播中,TS协议可以将视频文件进行分割,并通过网络进行传输。
TS流解析
传输流(TS)将具有共同时间基准或具有独立时间基准的一个或多个PES组合而成的单一的数据流称为传输流(Transport Stream)。
TS实际是面向数字化分配媒介(有线、卫星、地面网)的传输层接口。
对具有共同时间基准的两个以上的PES 先进行节目复用,然后再对相互可有独立时间基准的各个PS进行传输复用,即将每个PES再细分为更小的TS包TS包由包头、自适应区和包数据3部分组成。
每个包长度为固定的188B,包头长度占4 B,自适应区和包数据长度占184B。
184B为有用信息空间,用于传送已编码的视音频数据流。
当节目时钟基准(PCR-Program Clock Reference)存在时,包头还包括可变长度的自适应区,包头的长度就会大于4B。
考虑到与通信的关系,整个传输包固定长度应相当于4个ATM包。
考虑到加密是按照8B 顺序加扰的,代表有用信息的自适应区和包数据的长度应该是8B的整数倍,即自适应区和包数据为23×8B =184B。
TS包的包头由如图所示的同步字节、传输误码指示符、有效载荷单元起始指示符、传输优先、包识别(PID-Packet Identification)、传输加扰控制、自适应区控制和连续计数器8个部分组成。
其中,可用同步字节位串的自动相关特性,检测数据流中的包限制,建立包同步;传输误码指示符,是指有不能消除误码时,采用误码校正解码器可表示1bit 的误码,但无法校正;有效载荷单元起始指示符,表示该数据包是否存在确定的起始信息;传输优先,是给TS包分配优先权;PID值是由用户确定的,解码器根据PID将TS上从不同ES来的TS包区别出来,以重建原来的ES;传输加扰控制,可指示数据包内容是否加扰,但包头和自适应区永远不加扰;自适应区控制,用2 bit表示有否自适应区,即(01)表示有有用信息无自适应区,(10)表示无有用信息有自适应区,(11)表示有有用信息有自适应区,(00)无定义;连续计数器可对PID包传送顺序计数,据计数器读数,接收端可判断是否有包丢失及包传送顺序错误。
数字电视的常用表总结(PSI,SI,EPG,TS)
1, 一些定义ES:由编码器输出,可以是编码过的视频数据流,音频数据流,或其他编码数据流。
ES流经过PES 打包器之后,被转换成PES包。
PES包由包头和payload组成。
PSI:MPEG-2中定义了PSI(Program Specific Information)信息,其作用是从一个携带多个节目的某一个TS流中正确找到特定的节目。
PSI表:PSI表包括节目关联表(PAT)、条件接收表(CAT)、节目映射表(PMT)和网络信息表(NIT)组成。
SI:在MPEG-2标准中定义的PSI表,是对单一TS流的描述。
由于系统通常存在多个TS流,为了引导数字电视用户能在TS流中快速地找出自己需要的业务,DVB对MPEG-2的PSI进行了扩充,在PSI 四个表的基础上再增加了九个表,形成SI(Service Information)。
SI表:SI表包括业务描述表(SDT)、事件信息表(EIT)、时间和日期表(TDT)、时间偏移表(TOT)、业务群关联表(BAT)和运行状态表(RST)、填充表(ST)、选择信息表(SIT)、间断信息表(DIT)等表信息。
SI中的各表在实际使用中并不都需要传送,其中NIT、SDT、EIT、TDT是必需传送的,其它表则按照需要进行选择传送。
TABLE ID:TS流中有两种标识符,一种是包标识符,一种是表标识符。
具有相同PID的不同信息表由表标识符TABLE ID来区分。
EPG:在实用中,我们将SI所提供的数据通过有序地组织起来,生成类似节目报的形式,它能在电视机上即时浏览,这样将大大方便用户的使用,这就是电子节目指南EPG。
TS包PATCATPMT2、数字电视工作流程当机顶盒要要接收某一个指定节目流程:1. 首先从节目关联表(PAT)中取得这个节目的节目映射表(PMT)的PID值2. 然后从TS流中找出与此PID值相对应的节目映射表(PMT),从这个节目映射表中获得构成这个节目的基本码流的PID值3. 根据这个PID值滤出相应的视频、音频和数据等基本码流4. 解码后复原为原始信号,删除含有其余PID的传送包。
传送流(TS)的基础知识
传送流(TS)的基础知识数字电视的TS包和TS流的组成和功能综合考虑⼏下⼏个因素:(1)包的长度不能过短,否则包头开销所占⽐例过⼤,导致传输效率下降(2)包的长度不能过长,否则在丢失同步的情况下恢复同步的周期过长,导致较多的信息丢失(3)其他环境相适配,如纠错编码,宽带⽹等。
TS包按功能分为链接头,适配域,净荷。
链接头的长度固定,4个字节适配域的长度从0字节到184字节可变,可以没有,也可以扩展到整个TS包净荷数据的长度从0字节到184字节可变。
整个TS流是由许多长度为188字节的TS包周期性的排列⽽形成的。
ts包头包含4个字节的内容,主要负责TS包的同步、各种ES流的表⽰、TS包传输差错的检测和条件接收等功能。
(1)包同步(syn_bate)是包中的第⼀个字节,TS包以固定的8bit的同步字节开始,所有的TS传送包,同步字都是唯⼀的OX47,⽤于建⽴发送端和接收端包的同步。
(2)包差错指⽰(transport_error_indicator)⽤于从解码器向分接器指⽰传输误码。
若这个⽐特被设置,表⽰此TS包中所携带的净荷信息有错误,⽆法使⽤。
(3)净荷单元起始指⽰(payload_uint_start_indicator)标志PES包头以及包含节⽬特定信息的表(PMT,PAT)的头是否出现在该包中,在失步后的重新同步中起着重要的作⽤。
(4)传送优先级(transport_priority)⽤于表⽰包中含有重要数据,应予以优先传送。
(6)加扰控制(transport_scrambling_control)传送信息通过加⼊扰码来加密,各个基本码流可以独⽴进⾏加扰。
加扰控制字段说明TS包中的净荷数据是否加扰。
如果加扰,标志出解扰的密匙。
(5)包标识符PID(pid)PID是识别TS包的重要参数,⽤来识别TS包所承载的数据。
在TS码流⽣成时,每⼀类业务(视频,⾳频,数据)的基本码流均被赋予⼀个不同的识别号PID,解码器借助于PID判断某⼀个TS包属于哪⼀类业务的基本码流。
TS流
TS流(transport stream )MPEG组织于1994年推出MPEG-2压缩标准,以实现视/音频服务与应用互操作的可能性,MPEG-2标准是针对标准数字电视和高清晰度电视在各种应用下的压缩方案和系统层的详细规定。
对应于不同的应用,符合MPEG-2标准的码流又分为传送流和程序流,本文主要讲解了传送流有关的部分数据结构,从实际应用的传送流码流中截取了部分码流做了说明,并给出了部分解析传送流码流的实例程序。
在MPEG-II标准中,为了将一个或更多的音频、视频或其他的基本数据流合成单个或多个数据流,以适应于存储和传送,必须对其重新进行打包编码,在码流中还需插入各种时间标记、系统控制等信息,最后送到信道编码与调制器。
这样可以形成两种数据流——传送流(TS)和程序流(PS),分别适用于不同的应用,图1给出了单路节目的视音频数据流的复用框图。
传送流(Transport Stream)简称TS流,它是根据ITU-TRec.H.222.0|ISO/IEC 13818-2 和ISO/IEC 13818-3协议而定义的一种数据流,其目的是为了在有可能发生严重错误的情况下进行一道或多道程序编码数据的传送和存储。
这种错误表现为比特值错误或分组丢失。
传送流由一道或多道节目组成,每道节目由一个或多个原始流和一些其他流复合在一起,包括视频流、音频流、节目特殊信息流(PSI)和其他数据包。
其中PSI表有4种类型:节目关联表(PAT)、节目映射表(PMT)、网络信息表和条件访问表。
传送流应用比较广泛,如视音频资料的保存、电视节目的非线性编辑系统及其网络等。
在开发机顶盒以及视频设备时有时需要对码流的编码知识有比较清楚地了解,这样才能在遇到问题时做出全面的分析。
TS流结构分析如图2所示,TS包的长度是固定的,为188字节。
包括同步字节(sync_byte)0x47和数据包识别号PID等。
PID为13位字段,指示存储于分组有效负载中数据的类型,PID值0x0000为程序关联表保留,而0x0001为条件访问表保留,0x1FFF 为空分组保留。
ES流、PES流、PS流和TS流
ES流、PES流、PS流和TS流概念1、TS流:传输流,主要用于相对有错的环境下的传输与存储,如DVB2、PS流:节目流,主要用于相对无错的环境下的传输与存储,如DVD3、ES流:也叫基本码流,包含视频、音频或数据的连续码流4、PES流:也叫打包的基本码流,是将基本的码流ES流根据需要分成长度不等的数据包,并加上包头就形成了打包的基本码流PES 流。
5、封装: 就是捆绑打包,将画面视频文件和音轨文件打包在一起,并按照一定规则建立排序和索引,便于播放器或播放软件来索引播放,包括AVI / PS(Program Stream)/ TS(Transport Stream)/ MKV (Matroska)等。
TS流TS流(Transport Stream),也叫传输流,是由固定长度为188字节的包组成,含有独立时基的一个或多个program,一个program 又可以包含多个视频、音频、和文字信息的ES流;每个ES流会有不同的PID标示,而又为了可以分析这些ES流,TS有一些固定的PID 用来间隔发送program和ES流信息的表格—PAT和PMT表。
在MPEG-2系统中,由视频、音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送流。
组成传输流的是一系列连续的数据包,简称TS包。
TS包的长度固定,一般是188字节。
如果在这种TS包的尾部加入16字节的RS 纠错码,则包长为204字节。
传输流这种机制可将多路节目复用成一个流,并且,同一节目还可以包含多个视频和音频流。
每一个TS包都有一个包标识PID,同一基础流对应的TS包,PID的值相同。
TS流就是通过对各个基础流分配不同的PID号来唯一的标识各个不同的基础流、信息表和其它数据。
每一个TS包最多只能包含一路基础流的内容。
组成节目的视频流和音频流经过基础流编码器之后,形成基本流,每一路视频流或音频流对应一路基本流。
基本流经过打包,形成PES 包流。
便携式IPTV测试仪TS码流解析的实现
便携式IPTV测试仪TS码流解析的实现便携式IPTV测试仪是一种用于测试和分析IPTV系统性能的设备。
它可以通过对传输流中的TS码流进行解析和分析,提供关于传输质量、视频质量、音频质量等方面的信息。
下面将介绍便携式IPTV测试仪TS码流解析的实现过程。
首先,便携式IPTV测试仪需要具备对TS码流解析的功能,这需要通过硬件和软件的结合来实现。
硬件方面,测试仪需要具备高性能的处理器和足够的存储空间来处理和存储大量的数据。
同时,测试仪需要具备支持高速数据传输的接口,例如千兆以太网接口。
软件方面,测试仪需要具备强大的编解码功能,能够对TS码流进行解析和分析。
在实现过程中,首先需要从IPTV系统中获取到传输的TS码流。
通常,这可以通过测试仪的网络接口连接到IPTV系统中的交换机或路由器上,然后通过ARP、DHCP等协议获取到IPTV系统分配给测试仪的IP地址和相关配置信息。
获取到IP地址后,测试仪就可以通过该地址与IPTV系统建立TCP/IP连接,并获取到传输的TS码流。
获取到TS码流后,测试仪需要对其进行解析。
TS码流是一种多路复用的码流格式,其中包含多个音视频流、字幕、EPG等信息。
测试仪需要通过解析TS码流,将其中的各个流分离出来,并进行相应的解码处理。
这可以通过测试仪上的解码器来实现,解码器可以将TS码流中的音视频数据进行解码,并输出为可播放的音视频信号。
在解析TS码流的过程中,测试仪可以获取到各个流的相关信息。
例如,测试仪可以通过解析PAT(Program Association Table)和PMT (Program Map Table)信息,获取到TS码流中包含的节目信息。
同时,测试仪还可以通过解析PCR(Program Clock Reference)信息,获取到TS码流的传输时钟参考,用于判断流的同步状态。
除了对TS码流的解析,测试仪还可以对解析后的音视频数据进行质量分析。
通过分析视频数据的码率、帧率、分辨率等参数,测试仪可以评估视频的质量。
TS流分析
TS流分析图一MPEG-2定义了一些用来描述传输流所携带内容的信息表,称为节目特定信息(PSI)表,包括4个与之相关的表。
其中,节目关联表PAT和节目映射表PMT是确定当前传输流中各节目内容的最关键的两个表。
在接收到TS流时我们首先找到PA T表,因为只有找到PAT表才能确定PMT表才能知道哪些是我们要播放的音频数据和视频数据在开始之前先给出一片实际TS流例子:0000f32ch: 47 40 00 170000 B0 0D 00 01 C1 00 00 00 01 E0 ; G@....?..?...?0000f33ch: 20 A2 C3 29 41 FF FF FF FF FF FF FF FF FF FF FF ; ⒚)A0000f34ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f35ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f36ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f37ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f38ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f39ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f3ach: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f3bch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;0000f3cch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f3dch: FF FF FF FF FF FF FF FF FF FF FF FF 47 40 20 17 ; G@ .0000f3ech: 00 02 B0 1B 00 01 C1 00 00 E0 21 F0 00 1B E0 21 ; ..?..?.??.?0000f3fch: F0 04 2A 02 7E 1F 03 E0 22 F0 00 5D 16 BD 48 ; ?*.~..??].紿1Ts流包的机构是固定的,每个包长188字节,并且头部是不固定的(一般为4字节),负载部分为,188字节减去头部长度。
最直白明了的TS流分析
Transport error Payload unit Tranport Sync byte indicator start indicator priority 8 1 1 1
PID 13
Tranport scrambling Adaptation field Continuity Adaptation control control counter field 2 Header Size = 4 Bytes 2 4
PCR flag
OPCR flag
8
Splicing Point flag
1
1
1
1
1
Transport Adaptation Program clock Program clock private field reserved reference base reference extension data flag extension flag
Adaptation field format(部分)
TS payload
• Payload 包括PES、PSI/SI,但同一packet只包含 PES或PSI/SI。 • PES以0x000001开始。
• 如果开始字节不是0x000001,则payload部分内容是PSI,PSI部分以 pointer_field 开始。pointer_field 只有1个字节。 • pointer_field :an 8-bit field whose value shall be the number of bytes, immediately following the pointer_field until the first byte of the first section that is present in the payload of the Transport Stream packet (so a value of 0x00 in the pointer_field indicates that the section starts immediately after the pointer_field). When at least one section begins in a given Transport Stream packet, then the payload_unit_start_indicator shall be set to 1 and the first byte of the payload of that Transport Stream packet shall contain the pointer. When no section begins in a given Transport Stream packet, then the payload_unit_start_indicator shall be set to 0 and no pointer shall be sent in the payload of that packet.
TS协议解析范文
TS协议解析范文TS协议(Transport Stream Protocol)是一种用于传输音频、视频和数据的通信协议。
它是MPEG(Moving Picture Experts Group)组织制定的一种传输标准,广泛用于数字广播和数字电视等领域。
TS协议主要通过分组方式将音视频数据进行打包、传输和解析,下面将对TS协议的解析进行详细介绍。
一、TS协议概述TS协议是一种基于分组传输的协议,它将音视频数据进行分组打包,每个分组的大小为188字节。
每个分组都包含了一个称为PacketIdentifier(PID)的标识符,用于标识不同的流。
TS协议可以同时传输多个音视频流和数据流,每个流对应一个唯一的PID。
其中,音频流和视频流采用连续的PID进行标识,数据流则可以采用任意的PID。
TS协议还支持通过PAT(Program Association Table)和PMT(Program Map Table)来描述和管理不同的音视频流。
二、TS协议分组结构TS协议的分组结构非常重要,它决定了数据的组织方式和传输方式。
每个TS分组由4字节的同步字节开始,之后是连续的184字节的有效数据和4字节的错误检测码(CRC32)。
TS分组的有效数据包括了多个TS数据包。
TS数据包由4字节的同步字节和184字节的有效负载组成。
同步字节用于标识分组的开始,有效负载则包含了音视频数据和控制信息。
三、TS协议的传输和解析TS协议的传输过程分为打包、传输和解析三个步骤。
首先,音视频数据被打包成TS分组的形式。
在打包过程中,音频和视频流被分别编码和打包,并通过不同的PID进行标识。
每个分组的PID决定了数据的类型和对应的解析方式。
然后,打包后的TS分组通过传输媒介进行传输。
常用的传输媒介包括卫星、有线和无线网络等。
TS分组通过传输媒介被传输到接收端,并进行解析。
最后,接收端根据TS分组的PID进行解析。
首先,接收端解析PAT 表,获取各个音视频流的PID。
ts流解析规则
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。
ts的模块解析策略
ts的模块解析策略
TypeScript 的模块解析策略主要有两种:Node 策略和Classic 策略。
1.Node 策略:这个策略实际上是由Node.js 的模块解析逻辑来决定的。
当使用Node 策略时,TypeScript 会按照Node.js 的规则去解析模块,比如会考虑node_modules 文件夹以及package.json 文件等。
这种策略的优点是它能够很好地与Node.js 生态系统集成,缺点是可能会导致一些TypeScript 特有的功能(比如类型声明文件)无法正常工作。
2.Classic 策略:这个策略是TypeScript 最初实现时使用的模块解析逻辑。
当使用Classic 策略时,TypeScript 会首先在项目目录下查找模块,如果没有找到,再按照Node 策略去解析模块。
这种策略的优点是它能够更好地支持TypeScript 特有的功能,缺点是可能会与Node.js 的生态系统不太兼容。
这两种策略可以通过使用 --moduleResolution 标记来指定使用哪种策略。
例如,使用Node 策略可以运行 tsc --moduleResolution node,使用Classic 策略可以运行 tsc --moduleResolution classic。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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。
PAT和PMT表是必须的,还可以加入其它表如SDT(业务描述表)等,不过hls流只要有PAT和PMT就可以播放了。
∙PAT表:他主要的作用就是指明了PMT表的PID值。
∙∙PMT表:他主要的作用就是指明了音视频流的PID值。
∙∙音频流/视频流:承载音视频内容。
∙adaption自适应区的长度要包含传输错误指示符标识的一个字节。
pcr是节目时钟参考,pcr、dts、pts都是对同一个系统时钟的采样值,pcr是递增的,因此可以将其设置为dts值,音频数据不需要pcr。
如果没有字段,ipad是可以播放的,但vlc无法播放。
打包ts流时PAT和PMT表是没有adaptation field的,不够的长度直接补0xff即可。
视频流和音频流都需要加adaptation field,通常加在一个帧的第一个ts包和最后一个ts包里,中间的ts包不加。
PAT格式reserved 2b 固定为11version_number 5b 版本号,固定为00000,如果PAT有变化则版本号加1current_next_indicato r 1b固定为1,表示这个PAT表可以用,如果为0则要等待下一个PAT表section_number 8b 固定为0x00last_section_number 8b 固定为0x00开始循环program_number 16b节目号为0x0000时表示这是NIT,节目号为0x0001时,表示这是PMTreserved 3b 固定为111PID 13b 节目号对应内容的PID值结束循环CRC32 32b 前面数据的CRC32校验码PMT格式table_id 8b PMT表取值随意,0x02section_syntax_indicator1b 固定为1zero 1b 固定为0reserved 2b 固定为11section_length 12b 后面数据的长度program_number 16b 频道号码,表示当前的PMT关联到的频道,取值0x0001 reserved 2b 固定为11version_number 5b 版本号,固定为00000,如果PAT有变化则版本号加1 current_next_indicator1b 固定为1section_number 8b 固定为0x00last_section_number 8b 固定为0x00reserved 3b 固定为111PCR_PID 13b PCR(节目参考时钟)所在TS分组的PID,指定为视频PID reserved 4b 固定为1111program_info_length 12b 节目描述信息,指定为0x000表示没有开始循环stream_type 8b 流类型,标志是Video还是Audio还是其他数据,h.264编码对应0x1b,aac编码对应0x0f,mp3编码对应0x03reserved 3b 固定为111elementary_PID 13b 与stream_type对应的PID reserved 4b 固定为1111ES_info_length 12b 描述信息,指定为0x000表示没有结束循环CRC32 32b 前面数据的CRC32校验码pts是显示时间戳、dts是解码时间戳,视频数据两种时间戳都需要,音频数据的pts和dts相同,所以只需要pts。
有pts和dts两种时间戳是B帧引起的,I帧和P帧的pts等于dts。
如果一个视频没有B帧,则pts永远和dts相同。
从文件中顺序读取视频帧,取出的帧顺序和dts顺序相同。
dts算法比较简单,初始值 + 增量即可,pts计算比较复杂,需要在dts的基础上加偏移量。
音频的pes中只有pts(同dts),视频的I、P帧两种时间戳都要有,视频B帧只要pts(同dts)。
打包pts和dts就需要知道视频帧类型,但是通过容器格式我们是无法判断帧类型的,必须解析h.264内容才可以获取帧类型。
举例说明:I P B B B P读取顺序: 1 2 3 4 5 6dts顺序: 1 2 3 4 5 6pts顺序: 1 5 3 2 4 6点播视频dts算法:dts = 初始值 +90000 / video_frame_rate,初始值可以随便指定,但是最好不要取0,video_frame_rate就是帧率,比如23、30。
pts和dts是以timescale为单位的,1s = 90000 time scale , 一帧就应该是90000/video_frame_rate 个timescale。
用一帧的timescale除以采样频率就可以转换为一帧的播放时长点播音频dts算法:dts = 初始值 +(90000 * audio_samples_per_frame) / audio_sample_rate,audio_samples_per_frame这个值与编解码相关,aac取值1024,mp3取值1158,audio_sample_rate是采样率,比如24000、41000。
AAC一帧解码出来是每声道1024个sample,也就是说一帧的时长为1024/sample_rate秒。
所以每一帧时间戳依次0,1024/sample_rate,...,1024*n/sample_rate秒。
直播视频的dts和pts应该直接用直播数据流中的时间,不应该按公式计算。
(3)es层es层指的就是音视频数据,我们只介绍h.264视频和aac音频。
h.264视频:打包h.264数据我们必须给视频数据加上一个nalu(Network Abstraction Layer unit),nalu包括nalu header和nalu type,nalu header固定为0x00000001(帧开始)或0x000001(帧中)。
h.264的数据是由slice组成的,slice的内容包括:视频、sps、pps等。
nalu type决定了后面的h.264数据内容。
F 1b forbidden_zero_bit,h.264规定必须取0nal_ref_idc,取值0~3,指示这个nalu的重要性,I帧、sps、pps通常取3,NRI 2bP帧通常取2,B帧通常取0Type 5b 参考下表nal_unit_ty说明pe0 未使用红色字体显示的内容是最常用的,打包es层数据时pes头和es数据之间要加入一个type=9的nalu,关键帧slice前必须要加入type=7和type=8的nalu,而且是紧邻。
一、背景介绍之前我做了一个项目,要求写一个TS流解析的模块,因此看了ISOIEC 13818-1文档,外加很多人的博客来帮助理解,来了解TS流格式是个什么东西,收货颇多。
因此我觉得是时候发点干货回馈社会了。
二,TS流背景介绍在介绍具体字段,参数这些头疼,烦人的东西之前,我觉得有必要先介绍下TS流的应用背景,有了这个概念,再去深入学习,将如虎添翼。
T S流最经典的应用就是我们平时生活中的数字高清电视。
我们看的电视码流就是TS封装格式的码流,电视码流发送过来后,就会由我们的机顶盒进行解封装,解码,然后传给电视机进行播放。
这里就有一个问题,我们看电视,有很多的频道,节目,对应码流是怎么区分的呢?(TIPS,频道和节目的关系,比如我们有中央电视台综合频道,下属CCTV-1~CC TV14这些节目)TS流引入了PAT和PMT两张表格的概念来解决这个问题。
三,PAT和PMTTS流是以每188字节为一包,我们可以称为ts packet。
这个ts pack et有可能是音视频数据,也有可能是表格。
举例说明,TS流的包顺序为:PAT,PMT,DATA,DATA,,,,,,PAT,PMT,DATA,DATA,,,,,,每隔一段时间,发送一张PAT表,紧接着发送一张PMT表,接着发送D ATA(音视频)数据。
那么你可能要问了,有了这2张表格怎么区分频道,节目呢?PAT表格里面包含所有PMT表格的信息,一个PMT表格对应一个频道,比如中央电视台综合频道。
而一个PMT里面包含所有节目的信息,比如CCTV1~C CTV14。
在实际情况中我们是有很多频道的,所以PMT表格可不止一张,有可能是PAT,PMT,PMT,PMT,,,DATA,DATA,,,,PAT,PMT,P MT,,,DATA,DATA这样的形式。
除了这个设定外,每个频道或节目都有自己的标识符(PID),这样当我们拿到一个DATA,解析出里面的PI D,就知道是什么节目,并且也知道所属频道是什么了。
我们看电视的时候,会收到所有节目的DATA,当我们正在看某个节目的时候,机顶盒会把这个节目的DATA单独过滤出来,其它的舍弃。