解析PMT遇到的一些问题

 

在解析PMT表时遇到一些疑惑,在这里做个总结。

 

解析完PAT后得知PMT_PID就可以开始解析PMT了,但是我仔细一看PMT的表的格式,发现我几点疑惑,前面一些参数和PAT一致,但是后面有3个for循环,突然就懵了。

PAT就一个for循环唉,可以通过section_length得知接下来的长度减掉for循环前到section_length的那部分长度再减去CRC_32的长度就可以得知for循环所占的大小了。

想了好久才想清楚,section_length含义还是一样的, program_info_length 该节目的信息长度,此字段之后可能会有一些字节描述该节目的信息,这个参数就是表示第一个for循环的大小了,这样我们通过加减就可得出第二个for循环的大小,ES_info_length 是该节目相关原始流的描述符的信息长度,通过这个我们可得知第三个for循环的大小了。

 

在解析小循环里的数据时,我刚开始犯了一个错误,我看的是CA_descriptor这个表,错误的认为descriptor_length这个参数表示的是小小循环里的private_data_byte的长度,事实上它表示的是接下来的数据长度。CA_PID表示的是ECM_PID。当descriptor_tag = 0x9时描述的就是CA_descriptor这个表。

还有就是PAT中的节目顺序和PMT中的节目顺序并不一定是一样的,可能是打乱的,我被我的打印结果困扰了好久

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值