HTML中音频或者视频的缓存进度的获取

发布于 2022-09-06 07:38:42 字数 61 浏览 18 评论 0

现在的要求就是点击播放后,视频或者音频没有加载完成,显示加载中,并且显示加载的进度。加载的进度该怎么获取呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风为裳 2022-09-13 07:38:42

谢邀。
HTML的原生视频/音频标签本身就支持缓存显示功能,但是前提是你的source支持边下边播。
你用的播放模式是什么?
是用HTML的原生标签<video>吗?
如果是的话,source是用的静态URL吗?
然后如果是的话,是无法实现你要的功能的。
如果想实现你要的功能,首先要做到边下边播,这里一般最多也最方便的做法是使用rtmp+httpflv协议。
这样你就可以通过动态的httpurl来播放rtmp视频,并实现边下边播。
如果你用的是Java来写服务器,建议使用red5。

另外的话,有个简单的方法可以粗略地解决这个问题,就是preload属性,把它开启。

篱下浅笙歌 2022-09-13 07:38:42

1.可以利用video.buffer属性返回TimeRanges 对象,表示用户视频缓冲范围。不过会得到多个缓冲范围,以最后一个为主。
2.利用video.duration获取总时长;
3.两者做对比,可以得到下载进度。即:video.buffered.end(video.buffered.length-1)/video.duration

演多会厌 2022-09-13 07:38:42

建议仔细看下TimeRanges对象的相关属性

function getBuffered() {
    const myAudio = document.getElementById('myAudio');
    let buffered = myAudio.buffered,
        loaded;

    if (buffered.length) {
        // 获取当前缓冲进度
        loaded = 100 * buffered.end(0) / myAudio.duration;
        // 渲染缓冲条的样式
           $('.progress').css("width", loaded + "%");
    }

    setTimeout(getBuffered, 50);
}

getBuffered();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文