数字电视节目码流中的PAT表分析
2013-03-18 11:28
316 查看
PAT定义了当前TS流中所有的节目,其PID恒为0x00,它是PSI信息的根节点,要查找节目必须从PAT表开始,在TS中很容易被找到。
在PAT中,列出描述每个节目组成的PMT的PID,也包含NIT PID。PAT section header为8个字节,由表标识符、表格section长度、transport_stream_id、版本号、当前/下一次指示符、分段号和最后分段号组成。其可变字长的节目表清单由各个16bit的节目号和对应的13bit的PMT
PID组成。
【语法结构】
图1 PAT 表的section
表中:
Table_id:为8bit字段,该字段标识节目关联分段,对于PAT,置为0x00。
Section_syntax_indicator:1bit字段,对于PAT,置为0x01。
Reserved:2bit保留字段,用于将来扩展,置为11。
Section_length:12bit字段,指示当前section的长度,计数值从分段长度下一个字节开始,包括CRC校验的4个字节,开头两位置为00,因此其大小不超过1021。
Transport_stream_id:16bit字段,当前TS流的ID,与网络中其他TS流相区别,由运营商指定。
Reserved:2bit保留字段,用于将来扩展,置为11。
Version_number:5bit字段,指出PAT表的版本号,一旦PAT表有变化,其版本号增1,当增至31时,恢复至0。
Current_next_indicator:1bit,置为1时,表示传送的PAT当前有效,置为0表示PAT下一次有效。
Section_number:8bit字段,表示section的数目,从0x00开始。
Last_section_number:8bit字段,指出最后一个section号,即PAT表section的最大数目。
Program_number:16bit字段,指出了节目对于哪一个PMT PID是可用的,当为0x00时,后面的PID对应于NIT。
Reserved:3bit保留字段,用于将来扩展,置为111。
Network_id:13bit字段,NIT PID。
Program_map_PID:13bit字段,对应于program_number所指定的节目的program_map_section的PID,从上面可看出:一个program用4字节来表示(包括16bit的program_number与13bit的PID)。
CRC:用来证实数据正确性的循环冗余校验码。
【码流示例】
一个包含program_association_section的TS包如下(共188B):
图2 一个包含PAT section的TS包
按照前面的语法进行解析,结果如下:
图3 PAT section的解析
由上面可知,该TS流中包含5个service,其program number分别为101、102、103、104、105,也给出了对应的PMT PID,根据此PID去搜寻每个节目中对应的各类PES流的PID,从而顺利解码。另外,尽管NIT表在MPEG-2中属于可选,但为了保持与DVB的兼容,定义program_number=0时对应的PID为NIT
PID,也就是恒为0x10。
本文的目的是通过对数字电视节目码流的分析,帮助理解MPEG-2标准,并描述PSI信息在数字电视上的应用。
相关文章推荐
- 数字电视节目码流中的PAT表分析
- 数字电视节目码流中的PMT表分析
- 数字电视节目码流的PMT表分析
- 数字电视节目码流中的PMT表分析
- 数字电视电子节目指南(EPG)的实现原理分析
- TS码流分析
- 转发一个最新HEVC-H.265码流分析软件
- 分析IPNC_RDK H264编码器输出原始码流信息
- [转]H264码流结构分析
- 数字电视及TS码流基础知识
- h264码流结构分析(一)
- 我的HEVC码流分析工具MFC小笔记:树形控件使用及窗口缩放
- 视频码流分析工具
- 我对于数字电视基于TS流的节目解析流程1
- H264码流分析
- DVB码流中业务信息与电子节目指南
- 以live555为例来分析H264码流的打包发送
- FFMPEG推送UDP码流存在的问题分析与解决方案
- ffmpeg码流分析
- TS码流分析