webrtc peerconnection 中的音频和视频如何保持同步?

How does audio and video in a webrtc peerconnection stay in sync?

webrtc 对等连接中的音频和视频如何保持同步?我正在使用 API 将音频和视频(我假设为一个对等连接)发布到媒体服务器。音频偶尔会不同步长达 200 毫秒。我将此归因于音频和视频可能是单独的流,这就是为什么同步会失败的原因。

RTP/RTCP(WebRTC 使用)传统上使用 RTCP Sender Report。这允许每个 SSRC 流在 NTP 时间戳上同步。现在浏览器确实在使用它们,所以应该可以正常工作。

你在做任何协议桥接或任何可能只是 RTP 的事情吗?您使用的是什么媒体服务器?

除了肖恩的回答:

浏览器中的 WebRTC 播放器对到达的音频和视频样本之间的时间戳差异的容忍度非常低。您的音频和视频流必须精确对齐(交错),即从网络接收到的最后一个音频样本的时间戳与从网络接收到的最后一个视频帧的时间戳相比应该是 +- 200 毫秒左右。否则 WebRTC 播放器将停止使用 NTP 时间戳并单独播放流。这是因为 WebRTC 播放器试图将延迟保持在最低限度。不确定 WebRTC 团队的决定是否正确。如果您的带宽不足,或者如果实时编码器提供的流没有时间戳对齐 - 那么您将无法同步播放。在我看来,WebRTC 播放器可以有一个设置——是使用那个容差值还是始终同步播放,使用 NTP 时间戳,以延迟为代价。