android sipdroid RTP数据包类hasMarker函数始终返回false。

android sipdroid RTP数据包类hasMarker函数始终返回false。,android,network-programming,network-protocols,rtp,android-networking,Android,Network Programming,Network Protocols,Rtp,Android Networking,我在VoIP android应用程序中使用android SipDroid RTP数据包类。我正在将捕获的帧分割成小包。我已经设置了序号、时间戳和标记。 但当我看到log RTP数据包标记时,hasMarker函数总是返回false。即使我将其设置为true,它也只返回false。所以很难重新组装完整的帧,所以我临时根据小于1024的数据包大小重新组装数据包,这是各自时间戳的最后一个数据包 任何解决方案?标记的使用取决于流的类型。在大多数音频流中,标记表示流中的不连续性(即,音频分组“喷射”的第

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


任何解决方案?

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


至于它消失的原因-您需要调试代码和正在使用的任何库,可能还需要检查tcpdumps/wireshark捕获。

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

至于它消失的原因——您需要调试代码和正在使用的任何库,可能还需要检查tcpdumps/wireshark捕获