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/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()