【PSI/SI学习系列】1. TS流简介

本系列是从https://blog.csdn.net/kkdestiny/article/details/9850587文章学习的总结


首先了解下TS流、PS流、PES流和ES流都是什么?

ES:基本码流,不分段的音频、视频或其他信息的连续码流。

PS:把基本流ES分割成段,并加上相应头文件打包成形的打包基本码流。

PES:节目流,将具有共同时间基准的一个或多个PES组合(复合)而成的单一数据流(用于播放或编辑系统,如m2p)。

TS:传输流,将具有共同时间基准或独立时间基准的一个或多个PES组合(复合)而成的单一数据流(用于数据传输)。

PS流和TS流区别:

TS流的包结构是长度是固定的;PS流的包结构是可变长度的。这导致了TS流的抵抗传输误码的能力强于PS流

(TS码流由于采用了固定长度的包结构,当传输误码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。而PS包由于长度是变化的,一旦某一 PS包的同步信息丢失,接收机无法确定下一包的同步位置,就会造成失步,导致严重的信息丢失。因此,在信道环境较为恶劣,传输误码较高时,一般采用TS码流;而在信道环境较好,传输误码较低时,一般采用PS码流。)

由于TS码流具有较强的抵抗传输误码的能力,因此目前在传输媒体中进行传输的MPEG-2码流基本上都采用了TS码流的包格。

 

TS流是如何产生的?

img

从上图可以看出,视频ES和音频ES通过打包器和共同或独立的系统时间基准形成一个个PES,通过TS复用器复用形成的传输流。注意这里的TS流是位流格式(分析Packet的时候会解释),也即是说TS流是可以按位读取的。

 

TS流格式

TS流是基于Packet的位流格式,每个包是188个字节Packet Header4个字节(32位),Packet data184字节(或204个字节,在188个字节后加上了16字节的CRC校验数据,其他格式一样)。整个TS流组成形式如下:

img

Packet Header(包头)信息说明   
1sync_byte8bits同步字节
2transport_error_indicator1bit错误指示信息(1:该包至少有1bits传输错误)
3payload_unit_start_indicator1bit负载单元开始标志(packet不满188字节时需填充)
4transport_priority1bit传输优先级标志(1:优先级高)
5PID13bitsPacket ID号码,唯一的号码对应不同的包
6transport_scrambling_control2bits加密标志(00:未加密;其他表示已加密)
7adaptation_field_control2bits附加区域控制
8continuity_counter4bits包递增计数器

PID是TS流中唯一识别标志,Packet Data是什么内容就是由PID决定的。如果一个TS流中的一个Packet的Packet Header中的PID0x0000,那么这个Packet的Packet Data就是DVB的PAT表而非其他类型数据(如Video、Audio或其他业务信息)。下表给出了一些表的PID值,这些值是固定的,不允许用于更改。

PID
PAT0x0000
CAT0x0001
TSDT0x0002
EIT,ST0x0012
RST,ST0x0013
TDT,TOT,ST0x0014

下面以一个TS流的其中一个Packet中的Packet Header为例进行说明:

 1234567891011121314151617181920212223242526272829303132
Packet(十六进制)4707e512                        
Packet(二进制)01000111000001111110010100010010
Packet Header 信息1 sync_byte=0x472345 PID=0x07e5678                        

sync_byte=01000111, 就是0x47,这是DVB TS规定的同步字节,固定是0x47.

transport_error_indicator=0, 表示当前包没有发生传输错误.

payload_unit_start_indicator=0, 含义参考ISO13818-1标准文档

transport_priority=0, 表示当前包是低优先级.

PID=00111 11100101即0x07e5, Video PID

transport_scrambling_control=00, 表示节目没有加密

adaptation_field_control=01 即0x01,具体含义请参考ISO13818-1

continuity_counte=0010 即0x02,表示当前传送的相同类型的包是第3个

总结

TS流是一种位流(当然就是数字的),它是由ES流分割成PES后复用而成的;它经过网络传输被机顶盒接收到;数字电视机顶盒接收到TS流后将解析TS流。

TS流是由一个个Packet(包)构成的,每个包都是由Packet Header(包头)和Packet Data(包数据)组成的。其中Packet Header指示了该Packet是什么属性的,并给出了该Packet Data的数据的唯一网络标识符PID

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值