2017-02-15 55 views

回答

1

由于网络条件在甚至中等长度的视频的持续时间内可能会发生相当大的变化,因此很难确保在开始之前通过尝试下载足够的缓冲区来缓冲视频。

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

尝试获得高质量体验的常用方法是使用自适应比特率蒸汽。

要使用此功能,您需要在服务器上创建视频的多个不同比特率版本,并按时间将每个视频分成多个区块。 10秒大块。

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

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

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

该方法还允许通过从较低带宽开始快速启动视频,然后再加速到较高视频,再一次视频被缓冲。

您还可以看到的比特率的步骤一个漂亮的图形视图,并通过右键单击视频,然后选择“详细统计”在YouTube上的缓冲区 - 它提供了这样一个观点:

enter image description here

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

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

+0

你有任何想法如何,这些家伙[fiveminute.gs(http://www.fiveminutes.gs/)做过了吗?,他们预先加载了一部分视频作为加载屏幕,所以不存在缓冲问题。 –

+0

加载屏幕只是一个图像 - 当您进入该网站时,视频开始。您可以通过观看浏览器工具的网络标签并查看何时请求mp4文件来查看。如果你有足够糟糕的连接,它仍然会失速(我可以看到这一点)。他们在Vimeo上托管它,并使用Vimeo CDN,这将为他们提供非常好的用户体验。 – Mick

+0

我注意到他们正在加载一个巨大的文件,而他们显示加载屏幕[Here](http://www.fiveminutes.gs/scripts/db.js),这是什么?看起来像base64格式的mp3文件。 –