Twilio语音时间戳

问题描述 投票:0回答:1

我们的应用程序使用适用于iOS,Android和Web的Twilio语音SDK。我们的用例依赖于精确的设备同步和时间戳。我们正在多个相邻设备上(在Twilio电话会议中)播放音频流,我们需要使音频播放同步。在大多数情况下,它的效果都很好,但是从现在到现在,其中一台设备都落后了一点,并抛弃了整个体验。我们想检测设备何时落后(延迟接收数据包),以便我们暂时将其静音,以免影响我们想要的用户体验。

我们相信Twilio语音在后台使用了实时通信(Web RTC)和实时传输协议(RTP)。我们还认为RTP具有时间戳信息,用于指示何时发送数据包和何时接收数据包。

我们正在寻找有关如何读取此时间戳信息(已发送和已接收)以检测设备同步问题的任何建议。

我们的iOS和Android客户端是使用Flutter&Dart构建的,因此,使用Dart查看此数据包信息的任何方式都很好。如果没有,我们可以通过Swift和Kotlin使用本地渠道。对于网络,我们需要一种使用javascript查看此时间戳数据的方法。

[如果可能,我们希望通过SDK访问此信息。我在Twilio的语音文档中看不到有关时间戳的任何信息。因此,如果不可能的话,我们可能必须在设备上嗅探数据包?这样,我们可以查看来自Twilio的RTP数据包,以查看可用的信息。当然,只要这不违反Twilio的服务条款,:)

flutter dart twilio webrtc rtp
1个回答
1
投票

即使您可以获得此信息,我也认为它不会有用。 RTP中的timestamp字段与实时无关。在语音中,它实际上是音频流中的样本偏移量。对于典型的窄带编解码器,它具有固定的比特率并且没有静音抑制,这完全可以从RTP序列号中预测出来。例如,对于20ms的G.711数据包,它将每个数据包精确地增加160。

RTP接收器期望数据包的接收时间与其时间戳之间存在随机变化-称为抖动。这是由发送方,网络和接收方的延迟引起的。这就是为什么接收器使用抖动缓冲区来减少播放时缓冲区不足的可能性。 RTCP的抖动定义-the interarrival jitter-是对此进行测量的一种计算。也就是说-(可预测的)RTP时间戳与在接收器处测得的壁钟时间之间的变化。

也许您的客户端和服务器之间需要更像NTP协议的东西。

© www.soinside.com 2019 - 2024. All rights reserved.