TS流结构分析(PAT和PMT)

合集下载

Transport Stream(TS)数据结构原理

Transport Stream(TS)数据结构原理

Transport Stream概念规范中讲述的概念很多,容易让人糊涂,所以先把一些概念理清,弄清楚它们之间的关系,再看后面的就可提高很多的效率。

(1)ES- Elementary Streams (原始流),对视频、音频信号及其他数据进行编码压缩后的数据流称为原始流。

原始流包括访问单元,比如视频原始流的访问单元就是一副图像的编码数据。

(2) PES- Packetized Elementary Streams (分组的原始流),原始流形成的分组称为PES分组,是用来传递原始流的一种数据结构(3)节目是节目元素的集合。

节目元素可能是原始流,这些原始流有共同的时间基点,用来做同步显示。

(4)传输流和节目流TS-Transport Stream翻译为“传输流”PS-Program Stream 翻译为“节目流”PS用来传输和保存一道节目的编码数据或其他数据。

PS的组成单位是PES分组。

TS用来传输和保存多道节目的编码数据或其他数据,TS的组成单位是节目。

PS适用于不容易发生错误的环境,以及涉及到软件处理的应用,典型应用如DVD光盘的文件存储TS适用于容易发生错误的环境,典型应用就是数字电视信号的传输。

TS和PS是可以互相转换的,比如从TS中抽取一道节目的内容并产生有效的PS是可能。

(5)传输流分组和PES分组原始流分成很多PES分组,保持串行顺序,一个PES分组只包含一个原始流的编码数据。

PES分组长度很大,最大可为64K字节。

PES分组分为“分组首部(header)”和“有效负载(payload)”。

“有效负载”指跟随在首部字节之后的字节。

首部的前4个字节构成分组的起始码,标识了该分组所属原始流的类型和ID号。

TS分组也就是传输流数据形成的数据包。

每个TS分组长度为188字节,包括“分组首部”和“有效负载,前4个字节是分组首部,包含了这个分组的一些信息。

有些情况下需要更多的信息时,需在后面添加“调整字段(adaption field)”。

TS_表结构

TS_表结构

摘要:这篇文章结合DVB-C的有线数字电视某个TS流中的PSI/SI信息表,具体分析了MPEG-2的PSI信息和DVB的SI信息中的各种表,从而更清晰地了解各个表的功能和作用。

<br />要害词:数字电视;TS流;P ...摘要:这篇文章结合DVB-C的有线数字电视某个TS流中的PSI/SI信息表,具体分析了MPEG-2的PSI信息和DVB的SI信息中的各种表,从而更清晰地了解各个表的功能和作用。

在数字电视中,所有视频、音频、文字、图片等经数字化处理后都变成了数据,并按照MPEG-2的标准打包,形成固定长度(188个字节)的传送包,然后将这些数据包进行复用,形成传送码流(TS)。

通常由多个节目及业务复用组成的1个TS(TransportStream传输流)流对应1个8MHz带宽的频道。

数字电视机顶盒中为了找到需要的码流,辨认不同的业务信息,在TS流中必须加入一些引导信息,为此,在MPEG-2中,专门定义了PSI(ProgramSpecificInformation)信息,其作用是从1个携带多个节目的某1个TS流中正确找到特别指定的节目。

在MPEG-2标准中定义的PSI表,是对纯一TS流的描述。

因为体系通常存在多个TS流,为了引导数字电视用户能在TS流中迅速地找出自己需要的业务,DVB对MPEG-2的PSI进行了扩充,在PSI四个表的基础上再增长了九个表,形成SI(ServiceInformation)。

SI是对整个体系所有TS流的描述,在符合MPEG-2(13818-1)的TS传输流中插入DVB标准定义的业务信息(ServiceInformation,SI),使机顶盒(Set-Top-Box)的综合接收解码器(IRD)可以从TS流中提掏出节目供给商播出节目的列表和播出参数,以直观的形式预示给数字电视用户,要得用户可以方便地接收、选择数字电视节目。

PSI表包孕节目联系关系表(PAT)、条件接收表(CAT)、节目映射表(PMT)和收集信息表(NIT)组成,这些表在复用时通过复用器插入到TS流中,并用特别指定的PID(包标识符)进行标识。

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流的解析,可以获取到媒体数据的相关信息,并进行进一步的处理和播放。

PMT和PAT

PMT和PAT

PMT (Program Map Table) 节目映射表Meaning of PMT - "Program Map Table". A Program Specific Information table that supplies basic information about the services present in an Moving Pictures Experts Group 2 (MPEG-2) transport stream. The PMT lists all of the packet IDs (PID) for packets containing elements of a particular program such as audio, video, aux data, and Program Clock Reference (PCR). Packets in the same elementary stream all have the same PID and the decoder can select the elementary stream or streams it wants and reject the remainder. Also carried in the metadata is the information that some programs will be open and some may be subject to encryption节目映射表:数字电视与传统模拟电视节目选择的方式完全不同,传统电视的每一个频道对应一个节目,只要调到相应的频率,就可以看到节目。

而在数字电视信号中,一路码流对应多路节目,使用复用技术就可以做到了。

一个物理的频道只能给出包含多路节目的一路传输流。

要观看其中的某一路节目,还必须从该传输流中提取出该路节目的压缩包,然后再进行解码。

TS

TS

2.2 业务信息(SI)
• 1、业务群关联表(BAT):它提供了业务 群相关的信息,给出了业务群的名称以及 每个业务群中的业务列表。 • 2、业务描述表(SDT):业务描述表包含 了描述系统中业务的数据,例如业务名称、 业务提供者等 • 3、事件信息表(EIT):它包含了与事件 或节目相关的数据,EIT是生成EPG的主要 表。
• ts流是由很多不同种类的包所组成的,这些数据包都是188 个字节大小,这188个字节包含两部分,包头和负载,包头包 括同步信息,包信息等等,而负载则是传输的数据,而这些 负载则可以组成PES流或者私有流等等数据流. • 举例说,一个TS流包括100个包,其中PSI信息包占20个,PES 数据包80个,此TS流中只有一套节目流,不含有私有流,所 以从这80个PES包中的负载连接在一起,就是2个PES流(视 频,音频),如果每个PES包的负载长度为100字节,则这两个 PES流一共长度为8000个字节.假设其中视频的PES流长度 为6000字节.则视频的6000字节的PES流,是由PES包组成 的.PES包没有固定的长度,而是由包头部的数据给出.
• 4、运行状态表(RST):它给出了事件的 状态(运行/非运行),运行状态表更新这 些信息,允许自动适应切换事件。 • 5、时间和日期表(TDT):它给出了与当 前的时间和日期相关的信息,由于这些信 息更新频繁,所以需要单独使用一个表。
• 6、时间偏移表(TOT):它给出了与当前 时间、日期和本地时间偏移相关的信息, 由于这些信息更新频繁,所以需要单独使 用一个表。
CAT与NIT的结构图
• 从上面的几幅图中可知,要保证传送流能正常 接收,在该流中至少有一个完整有效的PAT。 CAT描述了节目的加密方式,它包含了节目的 EMM识别PID,只有授权的解码器才能由CAT 收到密钥,解码出相应的数据流。NIT包含节 目的频道调谐参数、频率、符号率等物理传输 网信息,这些信息使得接收机可以按照用户的 选择以很少的延时或无延时地改变频道、调谐 参数,正确地解码出TS。由于PSI数据的完整 性十分重要,因此在每个PSI段中均需要加校 验码。

ts码流结构分析

ts码流结构分析

ts码流结构分析TS(Transport Stream)是一种常用的音视频码流传输格式,用于在数字广播系统和互联网传输中对音视频数据进行分组和传输。

TS码流结构分析指的是对TS码流的组成部分进行分析,了解各部分的作用和关系。

以下是对TS码流结构的详细分析。

TS码流由多个188字节的包(Packet)组成,每个包都包含了一部分音视频数据。

一个TS包由4个字节的同步字节(Sync Byte)开头,用于标识包的开始。

接下来的4位为传输误码纠正(Error Correction)信息,用于保证传输数据的完整性和准确性。

再接下来的1位为负荷优先级(Payload Unit Start Indicator),用于标识包中是否包含了新的数据单元。

然后是13位的PID(Packet Identifier),用于标识包中所包含的数据单元的类型。

接下来的2位为传输加密(Transport Scrambling Control),用于指定包中数据的加密方式。

再接下来的2位为控制报文(Adaptation Field Control),用于指定包中的控制信息是否存在。

最后的184字节为有效数据(Payload),用于传输音视频数据。

每个TS包中的PID用于标识包中所包含的数据单元的类型,常见的PID值有0x0000(PAT:Program Association Table)、0x0001(CAT:Conditional Access Table)、0x0010(NIT:Network Information Table)、0x0011(SDT:Service Description Table)等。

PAT表包含了整个TS流的所有节目以及对应的PMT(Program Map Table)的PID值。

CAT表用于传递整个TS流中的加密和访问控制信息。

NIT表用于传递整个TS流中的网络信息,包括网络ID和传输参数。

SDT表用于传递整个TS流中的节目信息,包括节目名称和节目号码。

TS流结构

TS流结构

节目源2的映射表(PMT-2) 基本流 编号 包识别(PID) 性质 ES-1 16 Video ES-2 81 Audio ES-3 82 Audio ... … … ES-k 88 Data ... ... ...
条件接收表(CAT) PID=1 条件接收数据
188B P-1 A-1
188B P-2 V
16
188B P-1 MAP
188B P-2 A-1
81
188B P-1 V
54
188B PAT
188B P-2 V
16
188B P-2 MAP
188B EMM
PID
48
22
0
33
1
从TS流中分离出PSI表



MPEG-2的TS是经过节目复用和传输复用 两层完成的:在节目复用时加入了PMT; 在传输复用时加入PAT。 在节目解复用时,可以得到PMT;在传输 解复用时,可以得到PAT。 根据这些表中的PID信息,可以将相应的节 目视频,音频,数据信息找出,并将相关 数据包切换到相应路径
节目源结合表(PAT)PID=0 节目源 编号 Program-0 Program-1 Program-2 … Program-k ... 包识别(PID) 17 22 33 ... 55 ...
网络PID
网络信息表(NIT) 保密网络数据
节目源1的映射表(PMT-1) 基本流 编号 包识别(PID) 性质 ES-1 54 Video ES-2 48 Audio ES-3 49 Audio ... … … ES-k 55 Data ... ... ...
TS流的组成

将具有共同时间基准或具有独立时间基准 的一个或多个PES组合而成的单一的数据流 称为传输流(Transport Stream)。TS 实际是面向数字化分配媒介(有线、卫星、 地面网)的传输层接口。对具有共同时间基 准的两个以上的PES先进行节目复用,然后 再对相互可有独立时间基准的各个PS进行 传输复用,即将每个PES再细分为更小的 TS包

ts流解析规则专业资料

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 headersync_byte 8b同步字节, 固定为0x47transport_error_indicator 1b 传输错误指示符, 表白在ts头的adapt域后由一个无用字节, 通常都为0, 这个字节算在adapt域长度内payload_unit_start_indicator 1b 负载单元起始标示符, 一个完整的数据包开始时标记为1• ts层的内容是通过PID值来标记的, 重要内容涉及: PAT表、PMT表、音频流、视频流。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TS流也是由一个或多个PES组合而来的,他们可以具有相同的时间基准,也可以不同。

其基本的复用思想是,对具有相同时间基准[color="#000000"]的多个PES现进行节目复用,然后再对相互有独立时间基准的各个PS进行传输复用,最终产生出TS。

TS包由包头和包数据2部分组成,其中包头还可以包括扩展的自适用区。

包头长度占4bytes,自使用区和包数据共占184bytes,整个TS包长度相当于4个ATM包长。

TS包的包头由如下图摘录所示的同步字节、传输误码指示符、有效载荷单元起始指示符、传输优先、包识别(PID-Packet Identification)、传输加扰控制、自适应区控制和连续计数器8个部分组成。

其中,可用同步字节位串的自动相关特性,检测数据流中的包限制,建立包同步;传输误码指示符,是指有不能消除误码时,采用误码校正解码器可表示1bit 的误码,但无法校正;有效载荷单元起始指示符,表示该数据包是否存在确定的起始信息;传输优先,是给TS包分配优先权;PID值是由用户确定的,解码器根据PID将TS上从不同ES来的TS包区别出来,以重建原来的ES;传输加扰控制,可指示数据包内容是否加扰,但包头和自适应区永远不加扰;自适应区控制,用2 bit表示有否自适应区,即(01)表示有有用信息无自适应区,(10)表示无有用信息有自适应区,(11)表示有有用信息有自适应区,(00)无定义;连续计数器可对PID包传送顺序计数,据计数器读数,接收端可判断是否有包丢失及包传送顺序错误。

显然,包头对TS包具有同步、识别、检错及加密功能。

TS包自适应区由自适应区长、各种标志指示符、与插入标志有关的信息和填充数据4部分组成。

其中标志部分由间断指示符、随机存取指示符、ES优化指示符、PCR标志、接点标志、传输专用数据标志、原始PCR标志、自适应区扩展标志8个部分组成。

重要的是标志部分的PCR字段,可给编解码器的27MHz时钟提供同步资料,进行同步。

其过程是,通过PLL,用解码时本地用PCR相位与输入的瞬时PCR相位锁相比较,确定解码过程是否同步,若不同步,则用这个瞬时PCR调整时钟频率。

因为,数字图像采用了复杂而不同的压缩编码算法,造成每幅图像的数据各不相同,使直接从压缩编码图像数据的开始部分获取时钟信息成为不可能。

为此,选择了某些(而非全部)TS包的自适应区来传送定时信息。

于是,被选中的TS包的自适应区,可用于测定包信息的控制bit和重要的控制信息。

自适应区无须伴随每个包都发送,发送多少主要由选中的TS包的传输专用时标参数决定。

标志中的随机存取指示符和接点标志,在节目变动时,为随机进入I帧压缩的数据流提供随机进入点,也
为插入当地节目提供方便。

自适应区中的填充数据是由于PES包长不可能正好转为TS包的整数倍,最后的TS包保留一小部分有用容量,通过填充字节加以填补,这样可以防止缓存器下溢,保持总码率恒定不变。

根据前一篇中各数据的定义及数据结构,对数据进行分别解析如下:
TS包头定义:
typedef struct TS_packet_header
{
unsigned sync_byte : 8; //同步字节, 固定为0x47,表示后面的是一个TS分组unsigned transport_error_indicator : 1; //传输误码指示符
unsigned payload_unit_start_indicator : 1; //有效荷载单元起始指示符
unsigned transport_priority : 1; //传输优先, 1表示高优先级,传输机制可能用到,解码用不着
unsigned PID : 13; //PID
unsigned transport_scrambling_control : 2; //传输加扰控制
unsigned adaption_field_control : 2; //自适应控制01仅含有效负载,10仅含调整字段,11含有调整字段和有效负载。

为00解码器不进行处理
unsigned continuity_counter : 4; //连续计数器一个4bit的计数器,范围0-15
} TS_packet_header;
TS包头解析代码:
HRESULT CTS_Stream_Parse::adjust_TS_packet_header( TS_packet_header* TS_header ) {
unsigned char buf[4];
memcpy(buf, TS_header, 4);
TS_header->transport_error_indicator = buf[1] >> 7;
TS_header->payload_unit_start_indicator = buf[1] >> 6 & 0x01;
TS_header->transport_priority = buf[1] >> 5 & 0x01;
TS_header->PID = (buf[1] & 0x1F) << 8 | buf[2];
TS_header->transport_scrambling_control = buf[3] >> 6;
TS_header->adaption_field_control = buf[3] >> 4 & 0x03;
TS_header->continuity_counter = buf[3] & 0x0F; // 四位数据,应为0x0F xyy 09.03.18
return 0;
}
如下为一个TS包数据:
0x47 0x40 0x00 0x12 0x00 0x00 0xb0 0x0d 0x00 0x00 0xc1 0x00 0x00 0x00 0x01 0xe3 0xe8 0xf0 0x0b 0xd7
0x79 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 分析知道前四位0x47 0x40 0x00 0x12TS头部即为TS包头数据,解析如下:
sync_byte :0x47
transport_error_indicator: 0x00
payload_unit_start_indicator: 0x01
transport_priority : 0x00
PID :0x0000
transport_scrambling_control :0x00
adaptation_field_control :0x01
continuity_counter :0x02
PID = 0x0000,表示此TS包的内容为PSI信息表格的PAT表格数据,在4字节的TS包头之后的第一个字节的Point_field = 0x00, 表示偏移量为0,即紧随其后的即为PAT的数据信息。

TS流解析之PAT表格解析
TS流解析之PMT表格解析。

相关文档
最新文档