包:
包是TS中最基本的数据单元.它内部包含固定的1个同步字节,值为0x47.之后是3个比特标志字段和13个
比特的包ID字段(PID),然后是4个比特的连续计数器字段,下面还可以有其它可选附加的字段,如可靠用
来提供支持信息的字段.其余部分就是数据载荷。每个包的长度为188字节,但通信媒介为包添加错误校
检字节。如DVI-ASI使用204字节和ATSC使用208字节做为包长度.ATSC添加了20个字节的Reed-Solomon前
向错误码校验使得数据包最后达到208字节。选择188字节标准包长度的最初原因是为了兼容ATM通信系
统.
TS包格式:
名称 比特长度 描述
同步字节 8 0x47
传输错误指示(TEI) 1 当去模器无法纠正错误时设置
数据载荷起始指示 1 1表示PES或PSI数据的起始位置,否则为0
传输优先级 1 1表示此数据包在相同PID的数据包中具有更高的
优先级
PID 13 包ID号
干扰控制 2 00表示不加入干扰 由每个DVB指定: 01表示反转
供将来使用 10表示使用偶数进行干扰 11表示使用奇数来进行干扰.
支持字段是否存在 1 1表示提供了支持字段
数据载荷是否存在 1 1表示提供了数据载荷
连续性计数器 4
以上所有字段共用32字节,被称为TS 4字节前缀(Transport stream 4-byte prefix)。
支持字段 0或多 依赖标志字段
数据载荷 0或多 依赖标志字段
支持字段格式:
名称 比特长度 描述
支持字段长度 8 此支持字段其余部分所占用的字节数。
中断指示 1 1表示此包中的连续计数器发生中断。
随机访问指示 1 1表示此包中的PES包开始了1个视频或音频序列
基础流优先指示 1 1表示高优先级
PCR标志 1 1表示此支持字段包括了PCR字段
CPCR标志 1
粘接点标志 1 1表示此支持字段包括了粘接倒计时字段
传输私有数据标志 1 1表示此支持字段包括私有数据字节
支持字段扩展标志 1 1表示此支持字段包括了支持扩展
以下的字段可选 0或多 依赖于标志字段设置
PCR 33+9 包时间参考
OPCR 33+9 初始程序时间参考,辅助TS流拷贝至其它的TS流
中。
粘接点倒计时 8 表示相距多少个TS包后发生一个粘接点(可能是
负值)
其它添加字节 0或多 自定义
PID
每个在TS中的表和基本流都由13个比特的包ID来标识。多路分离器通过此PID从TS中分离出多路基本流
。时分多路转换将决定特定的PID在TS中的发生频率。
程序(Programs)
TS包括了一个程序(Programs)的概念。使用唯一PID的程序映射表(Program Map Table PMT)描述每
个单一的程序,所有组成此程序的基本流PID都列在此程序映射表中。举例来说,数字电视所使用的TS
中可能包括了3个程序,来提供3个电视频道。假设每个频道由1个视频流,1或2个音频流及必要的元数
据组成。接收器希望仅解码属于频道对应的程序PID的数据载荷就可以解码特定的频道。它可以丢弃所
有其它PID相关内容。多个程序的TS被参照为多程序TS(Multi Program Transport Stream MPTS)。单
一程序的TS被参照为单一程序TS(Single Program Transport Stream SPTS)。
程序定义信息(PSI)
TS包括了4种程序定义信息表:程序组成表(PAT),程序映射表(PMT)
,条件访问表(CAT)和网络信息表(NIT).MPEG-2定义没有包括CAT和NIT格式.
程序组成表(PAT):
列出了在TS中的所有有效的程序.每个列出的程序由一个16比特的被称为program_number(程序号)的值
来标识.每个在程序组成表(PAT)中列出的程序都结合了一个PID值来对应(程序映射表)PMT表.值为
0x0000的program_number被保留用来指定对应网络信息表(NIT)的PID值.如查在程序组成表中没提供这
个表项那么使用默认的0x0010值来指定网络信息表(NIT)的PID值.
TS包中的程序组成表(PAT)中永久包括值为0x0000的program_number.
程序映射表(PMT):
程序映射表(PMT)包括了程序的信息.每个程序都有一个对应的程序映射表(PMT).每个PMT将被转换为分
立的PID,虽然在技术上它是并不必要的.在PMT中描述了对应的程序相关的PID值.程序映射表(PMT)也提
供了包含的PID对应流的元数据.举例来说,如果1个程序中包括了1个MPEG-2视频流,它的程序信息表
(PMT)将列出这个视频流的PID,描述其为一个视频流,同时提供其包含的视频数据的类型.(此例中是
MPEG-2).程序映射表也(PMT)可以包括其它的流信息描述符.
程序时间参考(PCR):
辅助解码器以最好的速度控制和同步播放时间,程序通常对程序中的每个PID周期性的提供一个程序时间
参考(PCR),也是通常所说的主时钟(Mater Colck).MPEG-2的时间机制就由此值来控制,比如表示时间戳
(PTS)就是程序时间参考(PCR)的相对值.头33比特基于90kHz时钟,扩展的比特位是Hz和周期的ED。基于
9的27MHz时钟。
空包(Null Packets)
有些传输架构,比如在ATSC和DVB的TS中强制限制比特率。为了保证流可以达到此固定的比特率,多路
合成器需要插入一些附加的包。PID 0x1FFF被来表示这种类型的数据包。这些包中不包括任何数据载荷
,接收器当收到这种数据包时将忽略它的内容。
基于随机访问媒介的TS定义更改
时间码
TS被设计用在广播或磁带中,需要做一些修改来被使用在随机访问设备媒介上,比如数位摄像机记录视
频信息在DVD碟片,蓝光碟,硬盘或固态存储卡中。
基于随机访问的系统可能会在设备没有准备好的情况下保存数据包在临时缓冲区中,比如在设备启动时
,包不允许被写入,但会保持在以后条件具备时写入,一个4字节的时间码(TC)被加入至188字节的包
中,结果产生了192字节的包。这种格式被称为M2TS流。Sony称它为“BDAV MPEG-2 Transport stream
”,JVC称它为TOD(可能是“TS on disk”的缩写)如使用基于HDD的数位摄像机GZ-HD7时。M2TS也被
用在AVCHD视频文件中,它是MTS的扩展。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/CharlesPrince/archive/2009/06/12/4263999.aspx