单击播放后,如何防止HTML5视频缓冲整个视频?

时间:2016-01-14 13:41:02

标签: html html5 html5-video

有没有办法控制文件将在前面缓冲多少,一旦你点击播放,就像Youtube曾经做过的那样?

3 个答案:

答案 0 :(得分:2)

如果您在浏览器中使用内置视频支持,则无法控制正在缓冲的数据量。这取决于浏览器的实现,并且没有API来控制它。

浏览器实现非常好,通常浏览器在播放开始前只缓冲视频的一小部分。浏览器不下载整个文件。但是,如果在播放开始之前浏览器完全下载了文件,则可能的原因包括:

  • 也许文件非常小,浏览器决定将整个文件缓冲在内存中。
  • 可能文件的标题(初始化视频解码器所需)不在文件的开头,但在结束时,浏览器必须下载整个文件,直到它到达它。现在这种情况并不常见,但旧的视频编码器过去常常将mp4标头放在文件末尾而不是开头,因为它简化了编码器的实现。
  • 我注意到如果mp4文件的标题中没有段索引(用于搜索),浏览器会表现得很奇怪。有些浏览器会下载整个文件,以便他们自己构建段索引。
  • 如果您的服务器旧/配置错误,浏览器可能会决定不支持范围请求并下载整个文件(或禁用搜索)。

如果您需要在播放开始前控制缓冲量,则必须使用更复杂的协议(MPEG-DASHHLS)和允许您控制此参数的javascript播放器。 Youtube使用MPEG-DASH并拥有他们自己多年来开发的玩家。

答案 1 :(得分:1)

我非常确定您不会停止HTML5视频缓存整个视频,但这是一个有用的链接,用于计算已缓冲的视频量。

https://developer.mozilla.org/en-US/Apps/Build/Audio_and_video_delivery/buffering_seeking_time_ranges

答案 2 :(得分:1)

mylescc 一样,如果没有解决方法(在similar posting中描述),可能无法阻止视频元素缓冲。但是,根据您的使用情况,您还可以使用提供此功能的现有播放器实现,例如bitmovin playerdash.js等。