首页
网站导航
关于
升级日志
优乐购
w3c教程
react教程
mysql教程
HTML5 video 之缓冲条
作者: 图恩
分类:
编程开发
阅读: 676
发布时间: 2020-05-23 20:27:17
概述 html5的
标签现在可以完美支持web端的视频播放场景,最近在用
自定义播放器,在绘制进度条的时候,需要标记出视频缓冲段,因此了解了一下媒体元素(video、audio)HTMLMediaElement的一些属性,其中buffered属性跟缓存相关。 buffered 是一个只读属性,标识当前时刻浏览器缓存媒体资源的范围,返回值是一个时间范围(TimeRanges)。 TimeRanges接口用来表示一组时间范围,主要目的是跟踪供
元素和
元素加载使用的媒体哪些部分已经被缓冲。 一个 TimeRanges对象包括一个或多个时间范围,其中每个都由一个开始偏移量和结束偏移量指定。你可以将你想要检索的时间范围的索引值传递给 start() 和 end()方法来引用每个时间范围。 TimeRanges 有一个length属性,TimeRanges.length返回一个 unsigned long 类型的数字。表示由time range对象表示的time ranges的数量。TimeRanges.start(0)和TimeRanges.end(0)即获取到的第一段缓存内容开始时间和结束时间(单位秒) 获取缓冲范围 有了上面的基础知识,就可以获取缓冲段了。 这里说明一下,人为改变播放进度,会产生多段不连续TimeRanges,也就是说进度播放到哪,就从哪里开始缓存。 因此缓存进度条要依赖于当前播放时间,从当前时间点查询缓存的时间段,那么可以用如下代码实现 let video = querySelector('#videoId') video.addEventListener('progress', function () { let duration = video.duration; // 视频总长度 if (duration > 0) { for (var i = 0; i < video.buffered.length; i++) { // 寻找当前时间之后最近的点 if (video.buffered.start(video.buffered.length - 1 - i) < video.currentTime) { let bufferedLength = (video.buffered.end(video.buffered.length - 1 - i) / duration) * 100 + "%"; console.log(bufferedLength) break; } } } 关于进度条的疑惑 之前看视频,网络情况不好的时候,会暂停等待视频缓冲,如果时间足够,就可以缓冲完整个视频,但是现在看视频刷剧的时候发现,暂停后,视频只会缓冲一小段,然后就会停止,只有继续播放才会继续缓冲。 后来找到了原因:原来的播放器大多使用flash插件播放,html5的播放器是近些年才成为主流的。flash播放器可以缓冲整个视频,而html的视频播放器的缓冲机制是浏览器自身决定的。如果你发现视频暂停也会一直缓冲,那多半是flash播放器,Adobe从2020年12月份起,将不再维护flash,Chrome也将不再支持flash播放器,so, html5 video 搞起来吧!
本文章由javascript技术分享原创和收集
推荐阅读
发表评论
(审核通过后显示评论):
昵称:
邮箱:
内容:
发表评论
文章评论(0)
专题推荐
从零搭建博客
前端开发
javascript教程
vue3+ts教程
推荐阅读
1
周末自驾珠海
阅读:658
发布时间:2025-01-01 21:30:10
2
无法加载文件 C:\nvm4w\nodejs\npm.ps1
阅读:631
发布时间:2025-02-16 21:49:14
3
谷歌浏览器Chrome官方最新版下载地址
阅读:465
发布时间:2025-02-23 23:15:22
4
最顶级的教养就是从不拆穿
阅读:445
发布时间:2025-03-25 21:01:23
5
vue3是如何实现双向绑定的?
阅读:418
发布时间:2025-03-13 20:59:36
6
自驾巽寮湾
阅读:415
发布时间:2025-03-02 21:08:15
7
手机忘记解锁密码,只能恢复出厂设置
阅读:356
发布时间:2025-03-11 22:47:02
8
周末随笔
阅读:352
发布时间:2025-03-16 22:35:05
9
任何值得做的事都值得花时间慢慢做
阅读:318
发布时间:2025-02-22 23:03:17
10
自驾罗浮山
阅读:231
发布时间:2025-05-17 22:02:42
发表评论 (审核通过后显示评论):