1、什么是TS流?
数字机顶盒接收到的传输流,其携带的信息有:视频、音频、PAT、PMT等
1.1 什么是TS流、PS流、PES流、ES流?
-
ES流:音频码流或视频码流
-
PES流:ES流分段,并加上相应头部
-
PS流:节目流
-
TS流:一个或多个PES流组合而成
1.2 TS流格式
基于Packet的位流格式。每个包188字节,其中包含4字节头部和184字节数据
4字节 | 184字节 |
---|---|
Packet Header | Packet Data |
Packet Header中的PID是Packet ID号码,决定Packet Data的内容
Packet Data | PID |
---|---|
PAT | 0x0000 |
CAT | 0x0001 |
… | … |
2、PAT表是什么?
Program Association Table,节目关联表,定义了当前TS流中所有的节目
TS流ID | transport_stream_id |
---|---|
节目频道号 | 该频道可以包含很多的节目 |
PMT的PID | PMT的PID可以由用户自己定义 |
3、PMT表是什么?
Program Map Table,节目映射表。其包含的数据如下:
-
当前频道中包含的所有Video数据的PID
-
当前频道中包含的所有Audio数据的PID
-
和当前频道关联在一起的其他数据的PID(如数字广播,数据通讯等使用的PID)
假如要选择其中一个Video和Audio收看,只需要把要收看的节目的Video PID和Audio PID保存起来,在处理Packet的时候进行过滤即可实现
【一个PAT包含该TS流中的所有节目,一个PMT包含一个频道中的所有节目】
4、SDT表是什么?
SDT将节目名称和PID对应起来,这样用户可以通过直接选择节目名称来选择节目了
解析TS流的步骤
(1)机顶盒调整高频头到一个固定的频率(如498MHZ),如果此频率有数字信号,则COFDM芯片(如MT352)会自动把TS流数据传送给MPEG-2 Decoder
(2)MPEG-2 Decoder循环查找是否出现PID== 0x0000的Packet,如果出现了,则马上进入分析PAT的处理,获取所有PMT的PID
(3)接着循环查找是否出现PMT,如果发现了,则自动进入PMT分析,获取该频段所有的节目数据并保存。
(4)如果没有发现PAT或者没有发现PMT,说明该频段没有信号,进入下一个频率扫描