无法从mpegts SDT表(DVB流)中获取所有服务信息

时间:2018-08-08 11:30:07

标签: c++ parsing psi

我对此并不陌生,如果使用任何不正确的缩写,我感到抱歉。我正在尝试使用C ++从mpegts文件解析SDT表。流包含9个程序(频道)。这是我正在采取的步骤:

  
      
  1. 从文件获取188字节缓冲区
  2.   
  3. 检查标题并通过PID = 0x0011识别SDT表
  4.   
  5. 解析SI标头和表内容
  6.   
  7. 遍历描述符并获取有关服务的信息(FreeCa,提供者名称,服务名称...)
  8.   

但是在执行这些步骤时,当我到达数据包的末尾(188字节数据包的最后一个字节)时,并不是所有服务信息都包含在其中。只有7个频道信息可用。似乎已分裂。

在首先确定RecyclerView之后,其后是另一个带有标头SDT tableSDT 188 byte packet的{​​{1}}。因为PID = 0x0011payload-flag = 0,所以我无法解析内容,但是在调试器中,它向我显示了其余的服务信息在缓冲区中可用(我用其余的服务名称识别了它),但是不知道如何解析,并且{文件{1}}的sdt表的重复在ts文件中是相同的。

我使用this MPEG-TS parser/analyzer代码来解析传输流。

  

我的主要问题是,当一个188字节的数据包无法容纳所有服务信息时,该如何收集所有信息?

我在payload-flag软件中扫描了此0,它显示了所有服务信息。

非常感谢有关mpegts SI数据流的一些很好的文档。

0 个答案:

没有答案