1

我在我的 VoIP android 应用程序中使用 android SipDroid RTP 数据包类。我将捕获的帧分割成小数据包。我已经设置了 seqno、时间戳和标记。但是当我看到日志 RTP 数据包标记 hasMarker 函数总是返回 false 。即使我将其设置为 true,它也只会返回 false。重组完整帧非常困难,所以我暂时根据小于 1024 的数据包大小重组数据包,这是相应时间戳的最后一个数据包。

任何解决方案?

4

1 回答 1

1

Marker 的使用取决于流的类型。在大多数音频流中,标记指示流中的不连续性(即音频数据包“突增”的第一个数据包)。对于视频编解码器,通常它意味着一帧的最后一个数据包,尽管对于大多数编解码器,这也可以通过下一个数据包中的时间戳变化来推断。但是,帧边界处的数据包丢失可能会混淆该启发式,因此标记可能很有用。(一些编解码器 (H.264) 使用内部显式的片段结束打包标记,使标记几乎无关紧要。)

至于它为什么消失 - 你需要调试你的代码和你正在使用的任何库,并且可能还检查 tcpdumps/wireshark 捕获。

于 2011-04-29T15:35:45.243 回答