0

演示

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

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

问题

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

结果在上面的演示仓库中被替换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);
});

输出

如截图所示,延迟在增加,但视频和音频流畅。

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

4

1 回答 1

1

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

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

于 2021-09-29T08:22:47.823 回答