首页 > 编程知识 正文

ts格式转换器,码流和码率的区别

时间:2023-05-04 14:26:35 阅读:107313 作者:43

目录

背景

1、TS包头

2、节目专用信息PSI

2.1表格

第2.2节

2.3描述符描述符

3、常用表格格式

3.1部件表

3.2 PMT表

背景TS是Transport Stream的缩写,全名是MPEG2-TS。 MPEG2-TS主要应用于实时广播的节目,例如实时广播的电视节目。

MPEG-2规定TS传输数据包的长度为188字节,头部为4字节,负载为184字节。 但是,通信介质会向数据包中添加错误的检查字节,因此数据包的长度与188字节不同。 例如:

在DVB规定中,使用204字节作为分组长度:

1、通过调制器时,在每个数据包后增加16字节的读xxdqyg前向纠错码,形成204字节的数据包。 调制后总是存在204字节的分组。 2、在调制之前在复用器中插入RS码或虚构RS码。

ATSC标准使用208字节作为分组长度:添加20字节前向纠错码。 与DVB不同,ATSC规定RS码只出现在调制后的TS流中。

的TS分组都分为头部和有效载荷部分。 TS包可以包含很多内容,包括视频、音频和数据(包括PSI、SI和所有其他格式的数据)。

1.TS分组头部ts分组的头部提供与传输有关的信息。 同步、有无错误、有无扰乱、PCR (节目参考时钟)等标记。 TS分组的头部长度不是固定的,前32位(4个字节)是固定的,后面可以跟有自适应字段(自适应域)。 32位(4字节)是最小标头。

sync_byte (同步字节) 01000111 )0x47 )固定; 该字节由解码器标识,允许头部和有效载荷相互分离。

transport_error_indicator:「1”表示关联的传输分组中至少存在一个不可纠正的错误位。 设置为1后,在错误被修正之前不能重置为0。

如果payload_unit_start_indicator (起始指令)为1,则前四个字节之后是调整字节,其值为后面调整字段的长度length。 因此,有效载荷的开始位置必须再偏移1 [length]字节。

transport_priority:「1”表示优先级高于具有相同PID但该比特未设置为“1”的其他组。

PID :表示存储和分组有效载荷中的数据类型。 PID值0x0000—0x000F待定。 其中0x0000为PAT预约,0x0001为CAT预约,0x1fff为群组预约,即空包。

transport _ scrambling _ control :表示ts流分组有效载荷的加密模式。 如果空包为“00”,并且传输包标头中包含调整字段,请不要加密。

adaptation_field_control :指示页眉中是否有调整字段或有效载荷。 ‘00’保留供ISO/IEC将来使用; ‘01’只包含有效载荷,没有调整字段; ‘10’无有效载荷,仅包括协调字段; ‘11’在调整字段之后成为有效载荷,调整字段中的第一个字节指示调整字段的长度length,有效载荷的起始位置还应当偏移[length]字节。 空包必须是‘10’。

continuity_counter (连续性计数器) :随着具有相同PID的各个TS流的分组而增加,达到最大值时返回0。 范围为0到15。

adaptation_field (自适应字段) :根据自适应控制字段填充负载。

p>

 

 

2、节目专用信息PSI

当然,TS包也可以是空包。空包用来填充TS流,可能在重新进行多路复用时被插入或删除。

在系统复用时,视频、音频的ES流需进行打包形成视频、音频的 PES流,辅助数据(如图文电视信息)不需要打成PES包。PES包非定长,音频的PES包小于等于64K,视频的一般为一帧一个PES包。一帧图象的PES包通常要由许多个TS包来传输。MPEG-2中规定,一个PES包必须由整数个TS包来传输。如果承载一个PES包的最后一个TS包没能装满,则用填充字节来填满;当下一个新的PES包形成时,需用新的TS包来开始传输。

节目专用信息PSI(Program Specific Information)

管理各种类型的TS数据包,需要有些特殊的TS包来确立各个TS数据包之间的关系。这些特殊的TS包里所包含的信息就是节目专用信息。在不同的标准中它有不同的名字:

• MPEG-2中称为PSI;

• DVB标准根据实际需要,对PSI扩展,称为SI信息;

• ATSC标准中为PSIP信息

MPEG-2中,规定的对PSI信息的描述方法有以下几种:

 2.1 表Table

 节目信息的结构性的描述;

–节目关联表Program Association Table (PAT) 0x0000–节目映射表Program Map Tables (PMT) PAT指定–条件接收表Conditional Access Table (CAT) 0x0001–网络信息表Network Information Table(NIT) 0x0010–传送流描述表Transport Stream Description Table (TSDT) 2.2 节Section

 将表格的内容映射到TS流中; 

专用段 Private_ section 

2.3 描述符Descriptor

提供有关节目构成(视频流、音频流、语言、层次、系统时钟和码率等多方面)的信息; 
ITU-T Rec.H.222.0|ISO /IEC 13818-1 中定义的 PSI表可被分成一段或多段置于传输流分组中。一段就是一个语法结构,用来将 ITU-T Rec.H.222.0|ISO /IEC 13818-1 中定义的 PSI表映射到传输流分组中。

 

3、常用的表格式 3.1 PAT表 

TS流中包含一个或者多个PAT表。PAT表由PID为0x0000的TS包传送,其作用是为复用的每一路传送流提供出所包含的节目和节目编号,以及对应节目的PMT的位置即PMT的TS包的PID值,同时还提供NIT的位置,即NIT的TS包的PID的值。

table_id:固定为0x00,标志该表是PAT表。

section_syntax_indicator:段语法标志位,固定为1。

section_length:表示这个字节后面有用的字节数,包括CRC32。节目套数:(section length-9)/4

transport_stream_id:16位字段,表示该TS流的ID,区别于同一个网络中其它多路复用流。

version_number:表示PAT的版本号。

current_next_indicator:表示发送的PAT表是当前有效还是下一个PAT有效。

section_number:表示分段的号码。PAT可能分为多段传输,第一段为0,以后每个分段加1,最多可能有256个分段。

last_section_number:表示PAT最后一个分段的号码。

Program number:节目号

network_PID:网络信息表(NIT)的PID,节目号为0时对应ID为network_PID。

Program map PID:节目映射表(PMT)的PID号,节目号为大于等于1时,对应的ID为program_map_PID。一个PAT中可以有多个program_map_PID。

CRC_32:32位字段,CRC32校验码Cyclic RedundancyCheck。

 

 

3.2 PMT表

PMT在传送流中用于指示组成某一套节目的视频、音频和数据在传送流中的位置,即对应的TS包的PID值,以及每路节目的节目时钟参考(PCR)字段的位置。 
Table id :固定为0x02,标志该表是PMT 表。

Section syntax indicator:对于PMT表,设置为1 。

Section length:表示这个字节后面有用的字节数,包括CRC32 。

Program number:它指出该节目对应于可应用的Program map PID 。

Version number:指出PMT 的版本号。

Current next indicator:当该位置’1’时,当前传送的Program map section可用;当该位置’0’时,指示当前传送的Program map section不可用,下一个TS流的Programmap section 有效。

Section number:总是置为0x00(因为PMT表里表示一个service的信息,一个section 的长度足够)。

Last section number:该域的值总是0x00 。

PCR PID:节目中包含有效PCR字段的传送流中PID 。

Program info length:12bit域,前两位为00。该域指出跟随其后对节目信息的描述的byte 数。

Stream type:8bit域,指示特定PID的节目元素包的类型。该处PID由elementary PID 指定。

 

 

 

 

 

参考文章:

http://blog.csdn.net/c602273091/article/details/50372160

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。