【问题标题】:How to preload part of video so there is no buffering?如何预加载部分视频以便没有缓冲?
【发布时间】:2017-02-15 09:44:35
【问题描述】:

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

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

提前致谢。

【问题讨论】:

    标签: video preload buffering


    【解决方案1】:

    在开始之前尝试将足够的内容下载到缓冲区中来确保视频没有缓冲是非常困难的,因为即使是中等长度的视频,网络条件也会发生相当大的变化。

    保证它的唯一方法是下载几乎所有的视频,即使网络变得非常慢,你可能仍然会在最后得到缓冲。

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

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

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

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

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

    该方法还允许快速启动视频,方法是从较低带宽开始,然后在缓冲更多视频后升级到较高带宽。

    您还可以通过右键单击视频并选择“书呆子的统计数据”来查看 YouTube 上比特率步骤和缓冲区的漂亮图形视图 - 它提供了如下视图:

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

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

    【讨论】:

    • 你知道fiveminute.gs这些家伙是怎么做到的吗?他们已经预加载了一段视频作为加载屏幕,所以没有缓冲问题
    • 加载屏幕只是一个图像 - 当您进一步进入该站点时,视频就会开始。您可以通过查看浏览器工具上的网络选项卡并查看何时请求 mp4 文件来看到这一点。如果您的连接足够糟糕,它仍然会停止(我能够看到这一点)。他们将其托管在 Vimeo 上并使用 Vimeo CDN,这通常会给他们带来非常好的用户体验。
    • 我注意到他们正在加载一个巨大的文件,同时显示加载屏幕Here,这是什么?看起来像 base64 格式的 mp3 文件。
    • 您上面提到的文件,db.js 在我查看时实际上并未下载(Mac 上的 Chrome),因此它可能与操作系统或浏览器有关。循环播放一段视频通常只是要求播放器跳转到特定时间。
    • 我想你可能在这里有两个新问题,所以我建议你分开问他们以获得正确的答案。在时间上作为一个快速的初始说明,在寻找和移动到特定时间时,您几乎受所使用的特定视频播放器的支配。还值得注意的是,对于给定的帧速率,如果您进入亚秒级,则可能没有与您的时间完全一致的帧,因此玩家必须决定上一帧还是下一帧是最好的显示。跨度>
    猜你喜欢
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    相关资源
    最近更新 更多