我有 FFMPEG 流基线 h264 视频,我必须将其封装在 RTP 中并发送到 SIP 电话进行解码。我将 Linphone 与适用于 Windows 的 h264 插件和 Miria 一起用于解码进度。但是,有时我会从 FFMPEG 获得巨大的帧大小(3Kb ~ 9Kb),这显然不适合 MTU。
如果我“按原样”发送这些帧并信任 IP 分段功能,则某些手机能够很好地播放它,但其他手机会窒息并且无法解码流。我认为这是因为流不符合 RFC 3984,该 RFC 3984 规定不适合 MTU 的数据包必须分离到不同的 NALU 中,并使用 RTP 的标记功能标记帧的结尾。
我怎么知道我可以在哪里“剪切”I 或 P 帧?我注意到碎片化的 h264 数据包(没有标记标签的数据包)有时以 0xF8 结束,但无法完全得到模式,并且在描述如何通过 RTP 发送这些数据包的 RFC 3984 中没有指定如何执行此操作。
更新:有谁知道如何告诉 X264 库如何生成最大尺寸的 NALU?这样我应该能够避免这个问题。谢谢大家