【发布时间】:2014-06-10 01:56:03
【问题描述】:
我正在从 IP 摄像机流式传输 rtsp 流。我有一个解析器,它根据 rtp 有效负载类型将数据打包成帧。解析器能够处理 I 帧,因为它们包含帧开始和帧结束数据包,以及介于两者之间的数据包(这是 FU-A 有效负载类型)。
这些组合在一起形成一个完整的框架。当我尝试构建 P 帧时,问题就出现了,从 Wireshark 转储中,其中一些似乎是碎片化的(FU-A 有效负载类型),它们包含帧开始和帧结束数据包,但是它们之间不包含数据包.此外,在某些情况下,相机会发送带有有效载荷类型 1 的奇怪标记数据包,根据我的理解,这应该是一个完整的帧。
在处理这两个版本的 P 帧后,我使用 ffmpeg 尝试对帧进行解码,我收到错误消息,例如 top block 无法用于帧内模式 4x4。
起初我认为这可能是由于旧的 ffmpeg 版本,但我搜索了网络并重新编译了 ffmpeg,但遇到了同样的问题。
I 帧出现碎片并包含大量数据包,一些 P 帧有一个帧开始 (0x81) 和 EOF (0x41),但中间没有数据包,有些看起来从 0x41 开始损坏(看起来应该是第二个字节),它给出的有效载荷类型为 1。当涉及到这些问题时,我是一个新手,但我查看了 rtp 文档,但我找不到如何处理数据的问题。
我也从 VLC 流式传输,这看起来不错,但似乎将帧速率减半,我不确定他们如何能够重建帧。
请有人帮忙。
【问题讨论】:
-
有效载荷类型 1 是什么意思?我猜您将 RTP 有效负载类型与 H.264 NAL 单元类型混淆了?为什么你认为这些数据包很奇怪?