Node.js视频流WEBM Live Feed to HTML

bcs8qyzn  于 10个月前  发布在  Node.js
关注(0)|答案(1)|浏览(113)

我有一个node.js服务器,它通过socket.io从一个网页接收WEBM blob二进制数据小包!
(navigator.mediaDevices.getUserMedia -> stream -> mediaRecorder. ondatavailable-> DATA .我正在将那个DATA发送回服务器。所以这包括时间戳和二进制数据)。
我如何通过在VIDEO标签中添加URL,在一个永不结束的实时流中将这些流返回到HTTP请求中,而HTML网页可以使用这些流?
就像这样:

<video src=".../video" autoplay></video>

字符串
我想创建一个实时视频流,基本上流回我的网络摄像头到一个html页面,但我有点迷失了我该怎么做。请帮助。谢谢
编辑:我正在使用express.js来提供应用程序。
我只是不确定我需要在服务器上做什么来处理即将到来的webm二进制blob,以正确地服务于端点/视频上的html页面
请帮帮忙:)

kcrjzv8t

kcrjzv8t1#

经过多次失败的尝试,我终于能够构建我想要的东西:
通过socket.io进行实时视频流。
所以我做的是:
1.启动getUserMedia,启动网络摄像头
1.启动mediaRecorder设置,记录100 ms的间隔
1.在每个可用块上,通过socket.io向服务器发出一个事件,并将blob转换为base64字符串
1.服务器将base64转换的100毫秒视频块发送回所有连接的套接字。

  1. Webpage获取块并使用mediaSourcesourceBuffer将块添加到缓冲区
    1.将媒体源附加到视频元素上,瞧:)视频会播放得很流畅。只要你按顺序附加每个块,并且不跳过块(在这种情况下,它会停止播放)
    而且它起作用了!但是不能用
    问题是mediaRecorder进程是CPU密集型的,页面CPU使用率跳到15%,整个进程太慢。
    通过socket.io的视频流有2.5秒的延迟,即使不通过socket.io发送blob,但在同一页面上呈现它们,延迟也几乎相同。
    所以我发现这工作,但不适用于可持续的视频聊天服务。它只是不是为它设计的。对于录制网络摄像头视频稍后播放,mediaRecorder可以工作,但不适用于直播。
    我猜直播流媒体没有办法绕过WebRTC,你必须使用WebRTC将视频流发送到对等端或服务器发送到其他对等端.不要试图建立一个实时视频聊天服务与mediaRecorder.你只会浪费你的时间.我为你做的:)所以你不必。只要看看webRTC。你可能需要使用TURN服务器。Twilio提供STUN,TURN服务器,但它的成本。但你可以运行自己的TURN服务器与Codurn和其他服务,但我还没有考虑到。
    谢谢,希望能帮上忙.

相关问题