我可以使用某种本地存储作为 getUserMedia for near-RTC 的临时存储位置吗?

Can I use some sort of local storage as a temporary holding place for getUserMedia for near-RTC?

我有一个不完全需要实时通信的用例,但尽可能接近它以确保我的用户不必永远等待事后上传文件。我们的网站允许用户录制视频和音频,然后我们将其存储在我们的服务器上。

我从 flash(因为 flash)转移到带有 Kurento 媒体服务器的 WebRTC 实现。这对于高质量的互联网连接非常有效,但对于连接性较差的用户来说相对缺乏。

我在想,我是否可以在向服务器提供数据之前实现一些缓冲区,以便我可以弥补理想的连接性下降。我知道这不是 WebRTC 的本意,这导致了我是否应该研究另一种解决方案的问题?

欢迎和赞赏任何和所有建议!谢谢!

面对低带宽,缓冲区不会改变 WebRTC 的实时特性。以视频为例,WebRTC 可能会降低帧速率或分辨率以跟上,但 no-one 提议降低交付时间(放弃 realtime-ness)。然而,你的用例很有趣。

您可以使用 MediaRecorder。它可以让您在本地记录,然后使用 websockets 或数据通道将数据作为 blob 发送到服务器。

这是一个在 Chrome 和 Firefox 中有效的 fiddle(不幸的是,它只能播放视频):

https://jsfiddle.net/tmwLxjLy

它显示了简单的录制,然后在 5 秒后播放视频。我将把它留作练习,修改它以造成连续 5 秒的延迟。