Den*_*ish 4 javascript blob video-streaming bloburls
许多视频流网站,例如 youtube,似乎都有一个 blob url 作为他们的视频源。搜索,我无法弄清楚这是如何工作的。例如...
<video src="blob:https://www.youtube.com/ea375257-e9a8-4c3f-9cef-d8cf0f3ae53f"></video>
Run Code Online (Sandbox Code Playgroud)
URL.createObjectURL()是获取 blob url 的唯一方法,它接受File、Blob或MediaSource对象。由于视频正在流式传输,因此必须不断添加新数据,而 File 和 Blob 似乎没有该选项,而 MediaSource 有,但在 developer.mozilla.org 上被标记为实验性功能...
我的问题是这个通过 blob url 流式传输视频的过程是如何工作的?
我发现这篇文章解释了这个过程......
这是答案,但如果你想更深入地阅读这篇文章。
具有可变比特率或仅流式传输视频需要不断添加新的视频数据,这确实排除了没有该功能的 File 或 Blob 对象。MediaSource出于某种原因在 developer.mozilla.org 上被标记为实验性的,实际上是视频流服务在这种情况下使用的技术。URL.createObjectURL()仅用于获取指向 MediaSource 对象的 blob url。
然后使用Source Buffers将数据提供给 MediaSource。可以利用多个缓冲区来拥有单独的音频和视频之类的东西。重要的是 SourceBuffer 对象包含用于附加称为媒体段的新数据的函数。这个关键部分允许部分加载视频并将片段附加到视频数据中。对于诸如可变比特率(多种分辨率)或多种语言之类的事情,选择和加载特定分辨率/剪辑/音频并将其附加到视频数据中是一个问题。