如何预加载部分视频以便没有缓冲?

How to preload part of video so there is no buffering?

有没有办法预加载部分视频(显示加载栏),然后开始播放?我们不希望网站出现任何缓冲问题。

我尝试搜索类似的主题,但没有找到。

提前致谢。

很难通过在开始之前尝试将足够多的内容下载到缓冲区来确保视频不会被缓冲,因为即使是中等长度的视频,网络条件也会在持续时间内发生相当大的变化。

保证它的唯一方法是下载几乎所有视频,即使这样,如果网络速度极慢,您可能仍会在最后进行缓冲。

尝试获得您正在寻找的高质量体验的常用方法是使用自适应比特率流。

要使用它,您可以在服务器上创建视频的多个不同比特率版本,并按时间将每个版本分成多个块,例如10 秒块。

然后客户端逐块请求视频,像往常一样进行一些缓冲,并根据网络条件选择请求下一个块的比特率。

所以如果网络好,用户将获得高分辨率的视频体验,如果网络不好,分辨率就会下降。只要有良好的比特率版本组合,就可以避免缓冲,除非网络非常糟糕。

您可以看到 YouTube、Netflix 等使用的这种技术 - 在 YouTube 中,如果您查看设置,您可以尝试使用它并强制它选择一个特定的比特率大小并查看效果(如果您选择高一,除非您的互联网连接非常好,否则您可能会看到您描述的缓冲问题。

该方法还允许通过从较低带宽开始,然后在缓冲更多视频后逐步增加到较高带宽来快速启动视频。

您还可以通过右键单击视频并选择 'stats for nerds' 在 YouTube 上查看比特率步进和缓冲区的漂亮图形视图 - 它提供如下视图:

如果您确实想在开始播放之前调整缓冲区的大小,那么您可能需要修改播放器本身或创建您自己的播放器。

在网络播放器领域,HTML5 播放器现在通常使用媒体源扩展 (MSE),如果您愿意,它可以让您控制缓冲。 MSE 本质上是一种将缓冲区与 HTML5 视频源相关联的机制,而不是通常的文件或 URL。然后你可以写你自己的 JavaScript 你想要填充缓冲区。这里有一个很好的介绍(跳到 MSE 部分):