HTML5 视频:检测带宽

HTML5 Video: Detecting Bandwidth

本文关键字:带宽 检测 视频 HTML5      更新时间:2023-09-26

我有一个 1080p 的视频,我正在我的页面上以 HTML5 <video> 标签显示。

是否有一种简单的 javascript 方法来检测带宽,以便在用户的连接速度太慢而无法流式传输视频时,我可以将视频切换为较低质量的版本?类似于YouTube的"自动"视频大小选择器背后的逻辑。

根据您使用的播放器和编码平台,您可以对视频使用 HLS 编码。HLS代表HTTP Live Streaming,这是Apple开发的协议,主要用于解决此问题(以及其他)。

HLS基本上将您的视频文件分解为多个小文件,因此可以使用简单的Web服务器对其进行"伪"流式传输。使用 HLS,您还可以以多种分辨率进行编码,并且播放器可能能够切换到更低或更高的带宽。

唯一的缺点是大多数播放器使用Flash来播放HLS编码的内容。在这里查看它的实际效果: http://www.flashls.org/latest/examples/chromeless/

以下是flowplayer的HLS演示:http://demos.flowplayer.org/basics/hls.html

这是VideoJS的一个插件:https://github.com/videojs/videojs-contrib-hls

要在 HLS 中编码,您可以免费使用 ffmpeg 并将文件上传到您的服务器:https://www.ffmpeg.org/ffmpeg-formats.html#hls-1

或者,您可以使用基于云的解决方案,如AWS Transcoder或Brightcovehttps://aws.amazon.com/elastictranscoder/

在谷歌浏览器中,至少视频元素上有以下属性:

webkitVideoDecodedByteCount: 0
webkitAudioDecodedByteCount: 0

这些应该足以确定客户端解码视频的速度。在视频播放时,您将跟踪这些字节的增量量,从而为您提供客户端正在处理视频的字节/秒。

有关更新的答案:MPEG-DASH正在更换HLS。 HLS主要用于iOS领域。大多数桌面浏览器不打算支持它,而DASH是他们正在走向的标准。(但是,有很多播放器旨在允许您将HLS与HTML5视频播放器(如hls.js)一起使用)。DASH玩家包括Bitmovin,Google Shaka等。目前,许多人同时为HLS和DASH编码。HLS还支持碎片化的mp4。请注意,您需要在服务器端正确编码视频。其他资源:http://www.streamingmedia.com/Articles/Articles/Editorial/Featured-Articles/The-State-of-MPEG-DASH-2016-110099.aspx

我讨厌这个功能!这通常是错误的,如果我想等待 2 小时来加载我的当视频,而不是等待!没有可靠的方法可以准确地测量这一点,而无需向用户发送大型虚拟文件并测量到达他所花费的时间。

您应该依靠用户输入(并正确记住它!也不像YouTube!

简而言之,不要以YouTube为例

有些付费服务可能会让您了解对方使用的带宽,例如网速。

数据准确性可能对您来说足够了,但我还没有机会亲自测试它。