当MPEG2流通过RTP进入MPEG-TS Container时,如何找到帧结束?

时间:2012-12-15 21:02:15

标签: rtp multimedia mpeg2-ts

我通过RTP接收MPEG2-TS流。但我无法找到特定帧的结束。 当只有MPEG2流通过RTP时,当任何帧结束时,RTP报头中的标记位设置为1,但在这种情况下,标记位始终为0。 任何人都可以帮助我,如何在MPEG2-TS的情况下找到帧结束?

1 个答案:

答案 0 :(得分:3)

根据RFC 2250 M位应指示mpeg-ts的帧结束。 (3.3用于MPEG ES封装的RTP固定标头)但许多解码器可能没有将它放在标头中。

只有找到帧起点的其他方法是解码188字节的标头mpeg-ts packet.mpeg-ts包含“有效载荷单元启动指示器”。

所以你的算法就像

  1. RTP数据包含整数个mpeg-ts数据包。
  2. 每个数据包以0x47
  3. 开头
  4. 检查每个数据包的“有效负载单元启动指示符”fiels
  5. 如果“有效负载单位开始指示符== 1”,则检查是否为PES或PSI
  6. 如果PSI忽略数据包并继续步骤1,否则转到下一步
  7. 用于PES数据包检查“Stream id”,如果它的视频是你的新帧。