TS流中Packet和Section的区别
最近在学习TS流文件的解析,有点困惑Packet、Section、Table的关系和区别,认真查找了资料后才有了点眉目,在这里总结下,如果有什么不对,欢迎指出。
section是所有table的共有形式,包括PAT,PMT,NIT,CAT和所有SI table,一个section最大4096字节,section作为应用协议层存在。在传输时,它被打包成TS packet格式。
TS packet的大小固定为188(或204)字节,是一切DVB数据、音频、视频、控制信息、加密信息等最基本的结构,是作为传输层协议存在的。
从上面的内容可知,section和packet都不是一个层次的东西,一个存在于应用协议层,一个存在于传输协议层。对TS流的解析: TS包是以0x47开始,DMX(解复用器)首先找到包头,根据其PID过滤出需要的包,然后根据其section的结构还原成section,再由上层协议来处理。
一个完整的table可能包含在多个section中。