android sipdroid RTP 数据包类 hasMarker 函数始终返回 false。
我在我的 VoIP android 应用程序中使用 android SipDroid RTP 数据包类。我将捕获的帧分成小数据包。我已经设置了序列号、时间戳和标记。 但是当我看到日志 RTP 数据包标记 hasMarker 函数总是返回 false 。即使我将其设置为 true,它也只返回 false。因此很难重新组装完整的帧,因此我暂时根据小于 1024 的数据包大小重新组装数据包,这是相应时间戳的最后一个数据包。
有什么解决办法吗?
I am using android SipDroid RTP packet class in my VoIP android application. I am fragmenting the captured frames into small packets. I have set seqno, timestamp and marker.
But when I see log RTP packet marker hasMarker function always returns false . Even I set it to true it returns only false. So very difficult to reassemble complete frame so temporarly I reassemble packet based on packet size less than 1024 which is the last packet of respective timestamp.
any solution?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
标记的使用取决于流的类型。在大多数音频流中,标记指示流中的不连续性(即音频数据包“突发”的第一个数据包)。对于视频编解码器,通常意味着帧的最后一个数据包,尽管对于大多数编解码器,这也可以通过下一个数据包中的时间戳变化来推断。然而,帧边界处的数据包丢失可能会混淆该启发式方法,因此标记可能很有用。 (某些编解码器(H.264)使用内部显式片段结束打包标记,使标记几乎无关紧要。)
至于它消失的原因 - 您需要调试代码和您正在使用的任何库,并且可能还检查 tcpdump /wireshark 捕获。
Use of Marker depends on the type of stream. In most audio streams, Marker indicates a discontinuity in the stream (i.e. the first packet of a "spurt" of audio packets). For video codecs, normally it means the last packet of a frame, though for most codecs this can also be inferred by a the timestamp changing in the next packet. However, packet loss at a frame boundary can confuse that heuristic, so Marker can be useful. (Some codecs (H.264) use internal explicit end-of-fragment packetization markers, making Marker mostly irrelevant.)
As to why it's disappearing - you need to debug your code and whatever libraries you're using, and probably also check tcpdumps/wireshark captures.