【发布时间】:2020-06-06 16:19:39
【问题描述】:
我一直在研究如何将来自浏览器上的摄像头的帧实时流式传输到节点服务器。该服务器处理图像,然后应该将处理后的图像发送回客户端。我想知道最好的方法是什么。我见过一些解决方案,例如将帧以块的形式发送到服务器,供服务器处理。我研究了 webRTC,但得出的结论是,这更适用于客户端到客户端的连接。使用 websockets 或使用 socket.io 之类的简单实现是否足够?
【问题讨论】:
-
您的延迟要求是什么?使用 MediaRecorder 绝对可以获得更好的质量,但它具有更高的延迟。您可以使用 WebRTC 堆栈来保持实时性,但要以牺牲质量为代价。
-
它必须几乎是实时的。目标是记录帧,如果感兴趣则取回已处理的帧,同时将更多帧流式传输到服务器。我希望这是足够的解释。
-
请记住,如果您使用 WebRTC,它将丢帧并进行各种其他增强以保持低延迟。如果您的比特率下降到几百千位,或者帧大小随机下降到 320x240 左右,请不要感到惊讶。如果实时性很重要,这是一个适当的权衡。
-
好的,谢谢。我想知道将图像编码为base64以通过webRTC发送的实现是否也可以工作。服务器将被视为对等点,它会简单地将 base64 转换为服务器上的图像。
-
不!不要那样做......你为什么要base64编码任何东西?您在存储、额外处理、内存使用、首先破坏了使用 WebRTC 的全部意义等方面增加了 33% 的开销。
标签: node.js networking browser stream webrtc