python aiortc datachannel 有很大的延迟

python aiortc datachannel has a great latency

演示

https://github.com/tsonglew/aiortc-datachannel-delay

运行 python main.py启动服务器,然后用浏览器访问localhost:8080

问题

我正在尝试处理来自视频轨道的视频帧,并使用数据通道发回结果。

结果在上面的演示 repo 中被替换为 time.time(),如下所示:

self.channel.send(
      json.dumps({"now": time.time() * 1000})
)

<client receive from datachannel time> - <datachennl.send() time> 被认为是延迟,并且 console.log 使用代码编辑:

ch.addEventListener("message", function (evt) {
    console.log(Date.now() - JSON.parse(evt.data).now);
});

输出

如截图所示,延迟越来越大,但视频和音频都很流畅。

我怎样才能摆脱日益增长的延迟?谢谢

aiortc 中调用 RTCDataChannel.send 不要立即发送 SCTP 数据块。作为解决方法,刷新出站数据队列并显式传输数据可能会有所帮助。

self.channel.send(json.dumps({"now": time.time() * 1000}))
await self.channel._RTCDataChannel__transport._data_channel_flush()
await self.channel._RTCDataChannel__transport._transmit()

更多详情:https://github.com/aiortc/aiortc/issues/547