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



有没有办法控制点击播放后文件将被缓冲多少,就像 Youtube 曾经做过的那样?

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

浏览器

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

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

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

我很确定你不会阻止HTML5视频缓冲整个视频,但这里有一个有用的链接,用于计算有多少视频被缓冲了。

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

就像 mylescc 提到的,如果没有解决方法(在类似的帖子中描述),可能无法阻止视频元素缓冲。但是,根据您的用例,您还可以使用提供此功能的现有播放器实现,例如 bitmovin 播放器、dash.js 等。

最新更新