连续合并和 blob 流
Continuous merge and stream of blobs
在我的代码 (Javascript) 中,我使用 socket.io 将 base64 数据从代理传输到客户端以建立视频通话功能。为此,我每 5 秒或 10 秒录制一次视频,并使用 mediaRecorder 将其发送到 base64 中的客户端,每 10 秒将其转换为 blob。
问题:所以,我想知道我可以每 10 秒合并一个新的 blob 以及流式传输视频吗?
我已经尝试过使用 createObjectURL(blob) 这不起作用。 .
整个方法存在严重缺陷,无法按您希望的方式工作。
I am making use of socket.io to transmit the base64 data from agent to client to establish video calling functionality.
对于视频通话,您需要低延迟。在浏览器中获得低延迟实时视频的唯一合理方式是 WebRTC。这意味着您将不会使用 Socket.IO,也不会使用 Web 套接字(好吧,无论如何都不会用于视频……也许用于信号传输)。
base64 data
不要这样做!只有在基于文本的传输中发送二进制数据时才需要 Base64 编码。即使您使用 Socket.IO 或 Web Sockets,您也不需要 base64...它们都支持二进制传输。
如果您使用 base64,带宽使用量会增加 33%,同时浪费 CPU 和内存,没有任何好处。
Problem: So, I would like to know can I merge a new blob in every 10 sec along with stream the video?
Blob 是不可变的。一旦创建就无法更改。
您可以使用 MediaSource Extensions,但这不适用于今天由 MediaRecorder 创建的视频(很遗憾)。您必须在服务器端对该视频进行转码。
实际上,因为这是视频通话,请放弃整个堆栈并切换到 WebRTC。
在我的代码 (Javascript) 中,我使用 socket.io 将 base64 数据从代理传输到客户端以建立视频通话功能。为此,我每 5 秒或 10 秒录制一次视频,并使用 mediaRecorder 将其发送到 base64 中的客户端,每 10 秒将其转换为 blob。
问题:所以,我想知道我可以每 10 秒合并一个新的 blob 以及流式传输视频吗?
我已经尝试过使用 createObjectURL(blob) 这不起作用。 .
整个方法存在严重缺陷,无法按您希望的方式工作。
I am making use of socket.io to transmit the base64 data from agent to client to establish video calling functionality.
对于视频通话,您需要低延迟。在浏览器中获得低延迟实时视频的唯一合理方式是 WebRTC。这意味着您将不会使用 Socket.IO,也不会使用 Web 套接字(好吧,无论如何都不会用于视频……也许用于信号传输)。
base64 data
不要这样做!只有在基于文本的传输中发送二进制数据时才需要 Base64 编码。即使您使用 Socket.IO 或 Web Sockets,您也不需要 base64...它们都支持二进制传输。
如果您使用 base64,带宽使用量会增加 33%,同时浪费 CPU 和内存,没有任何好处。
Problem: So, I would like to know can I merge a new blob in every 10 sec along with stream the video?
Blob 是不可变的。一旦创建就无法更改。
您可以使用 MediaSource Extensions,但这不适用于今天由 MediaRecorder 创建的视频(很遗憾)。您必须在服务器端对该视频进行转码。
实际上,因为这是视频通话,请放弃整个堆栈并切换到 WebRTC。