了解 blob url 视频流

Understanding blob url video streaming

许多视频流网站,例如 youtube,似乎都有一个 blob url 作为它们的视频源。搜索,我无法弄清楚这是如何工作的。例如...

<video src="blob:https://www.youtube.com/ea375257-e9a8-4c3f-9cef-d8cf0f3ae53f"></video>

URL.createObjectURL(), the only way to get a blob url, takes in a File, Blob, or MediaSource 对象。由于正在流式传输视频,因此必须不断添加新数据,而 File 和 Blob 似乎没有该选项,而 MediaSource 有,但在 developer.mozilla.org...[=13= 上被标记为实验性功能]

我的问题是这个通过 blob url 流式传输视频的过程如何工作?

我找到了这篇解释这个过程的文章...

medium article about web streaming

这是答案,但如果您想更深入地阅读文章。

具有可变比特率或仅流式传输视频需要不断添加新的视频数据,这确实排除了不具备该功能的文件或 Blob 对象。 MediaSource, which for some reason is marked as experimental on developer.mozilla.org, is actually the technology used in this type of case, by video streaming services. URL.createObjectURL() 仅用于获取指向 MediaSource 对象的 blob url。

然后 Source Buffers 用于将数据馈送到 MediaSource。多个缓冲区可用于拥有独立的音频和视频之类的东西。重要的是 SourceBuffer 对象包含附加称为媒体段的新数据的函数。这个关键部分允许分部分加载视频并将片段附加到视频数据。对于可变比特率(多种分辨率)或多种语言之类的事情,选择和加载特定 resolution/clip/audio 并将其附加到视频数据是一个问题。