vedio.ontimeupdate()和video.onloadeddata()

video.onloadeddata ()

video.onloadeddata 是 JavaScript 中用于监听 HTML <video> 元素 「当前帧数据已加载」 的事件处理器。当视频的第一帧画面数据加载完成(足以开始播放)时,会触发此事件。


1. 基本用法

const video = document.querySelector('video');video.onloadeddata = function() {console.log('视频第一帧已加载,可以播放了!');
};
  • 触发时机

    • 视频元数据(如分辨率、时长)和第一帧画面加载完成。

    • 早于 oncanplay(可流畅播放的事件)。

  • 用途:在视频初始渲染时执行操作(如显示封面、初始化播放器)。


2. 替代方案:addEventListener

推荐使用 addEventListener,避免覆盖已有事件:

video.addEventListener('loadeddata', function() {console.log('视频数据已加载');
});

3. 常见应用场景

① 显示视频封面(第一帧)
video.addEventListener('loadeddata', function() {const canvas = document.createElement('canvas');canvas.width = video.videoWidth;canvas.height = video.videoHeight;canvas.getContext('2d').drawImage(video, 0, 0);document.querySelector('.video-cover').appendChild(canvas);
});
② 初始化播放器状态
video.addEventListener('loadeddata', function() {// 显示自定义播放按钮document.querySelector('.play-button').style.display = 'block';
});
③ 检测视频基础信息
video.addEventListener('loadeddata', function() {console.log('视频分辨率:', video.videoWidth, 'x', video.videoHeight);console.log('视频时长:', video.duration);
});

4. 与其他视频事件的区别

事件触发条件
onloadedmetadata仅元数据(如时长、分辨率)加载完成,但画面未加载。
onloadeddata第一帧画面加载完成,可显示画面但可能无法流畅播放。
oncanplay已加载足够数据可开始播放(但不保证不卡顿)。
oncanplaythrough已加载足够数据可流畅播放至结束(理想状态)。

5. 注意事项

  • 网络环境影响:如果视频文件较大或网络慢,loadeddata 可能延迟触发。

  • preload属性相关:若 <video preload="none">,需用户交互后才会加载数据。

  • 移动端兼容性:部分移动浏览器可能延迟加载数据以节省流量。


总结

video.onloadeddata 是视频处理的基础事件之一,适合在视频画面首次可用时执行初始化操作。若需更高兼容性,建议结合 loadedmetadata 和 canplay 事件使用。

video.ontimeupdate()

video.ontimeupdate() 是 JavaScript 中用于监听 HTML <video> 元素播放时间更新的事件处理器。当视频播放时,只要当前播放位置(currentTime)发生变化,就会触发该事件。


1. 基本用法

const video = document.querySelector('video');video.ontimeupdate = function() {console.log('当前播放时间:', video.currentTime);
};
  • 触发时机:视频播放、用户拖动进度条、跳转时间点等。

  • 用途:实时监测播放进度,用于更新进度条、显示字幕、记录观看行为等。


2. 替代方案:addEventListener

更推荐使用 addEventListener,避免覆盖已有事件:

video.addEventListener('timeupdate', function() {console.log('时间更新:', video.currentTime);
});

3. 常见应用场景

① 自定义进度条同步
video.addEventListener('timeupdate', function() {const progress = (video.currentTime / video.duration) * 100;document.querySelector('.progress-bar').style.width = `${progress}%`;
});
② 字幕/弹幕显示
const subtitles = [{ time: 5, text: "第一句字幕" },{ time: 10, text: "第二句字幕" }
];video.addEventListener('timeupdate', function() {subtitles.forEach(item => {if (video.currentTime >= item.time && video.currentTime < item.time + 2) {document.querySelector('.subtitle').textContent = item.text;}});
});
③ 记录观看进度
video.addEventListener('timeupdate', function() {localStorage.setItem('videoProgress', video.currentTime);
});// 下次打开页面时恢复进度
video.currentTime = parseFloat(localStorage.getItem('videoProgress')) || 0;

4. 注意事项

  • 性能优化timeupdate 触发频率较高(约每秒4-60次),避免在回调中执行复杂计算。

  • seeked事件区别seeked 仅在用户手动跳转后触发,而timeupdate在播放过程中持续触发。


总结

video.ontimeupdate 是控制视频交互的核心事件之一,适用于进度跟踪、动态内容加载等场景。推荐使用 addEventListener('timeupdate') 以保持代码灵活性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/85165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Baklib内容中台革新企业知识实践

Baklib智能知识中枢构建 作为现代企业知识管理的核心架构&#xff0c;Baklib内容中台通过整合多源异构数据形成智能化知识中枢&#xff0c;实现从信息采集到价值转化的全链路管理。其底层采用跨平台数据贯通技术&#xff0c;支持API接口与企业现有CRM、ERP系统无缝对接&#x…

用不太严谨的文字介绍遥测自跟踪天线的基本原理

前两天跟一个客户见面的时候&#xff0c;客户问我&#xff1a;遥测自跟踪天线能够跟踪目标&#xff0c;是什么原理&#xff1f;不需要目标的位置&#xff0c;怎么做到自跟踪的&#xff1f; 突然一瞬间&#xff0c;有点语塞。 难道要介绍天线、馈源、极化、左旋、右旋、和差网…

VS配置redis环境、redis简单封装

一、安装redis数据库 1.下载redis的压缩包 wget https://download.redis.io/releases/redis-6.0.5.tar.g 2.解压缩redis压缩包&#xff0c;一般就在当前路径 tar -zvxf redis-6.0.5.tar.gz -C /usr/local/redis 方便找我把它解压缩在/usr/local/redis&#xff0c;如果没有r…

C++23 已移除特性解析

文章目录 引言C23 已移除特性介绍1. 垃圾收集的支持和基于可达性的泄漏检测&#xff08;P2186R2&#xff09;背景与原理存在的问题移除的影响 2. 混合宽字符串字面量拼接非良构&#xff08;P2201R1&#xff09;宽字符串编码概述混合拼接的问题示例分析移除的意义 3. 不可编码宽…

Cloudflare

Cloudflare 是一个网络基础设施和网站安全服务提供商&#xff0c;它的主要作用是让网站 更快、更安全、更可靠。简单来说&#xff0c;它是一个“护盾 加速器”。 &#x1f9e9; Cloudflare 的主要功能&#xff1a; 1. &#x1f680; 加速网站访问&#xff08;CDN&#xff09…

Spring Boot启动慢?Redis缓存击穿?Kafka消费堆积?——Java后端常见问题排查实战

Spring Boot启动慢&#xff1f;Redis缓存击穿&#xff1f;Kafka消费堆积&#xff1f;——Java后端常见问题排查实战 引言 Java后端系统因其丰富的技术栈和复杂的业务逻辑&#xff0c;常常面临启动延迟、性能瓶颈、异常错误等多种挑战。从核心语言、Web框架到分布式微服务及缓…

数字人引领政务新风尚:智能设备助力政务服务

在信息技术飞速发展的今天&#xff0c;政府机构不断探索提升服务效率和改善服务质量的新途径。实时交互数字人在政务服务中的应用正成为一大亮点&#xff0c;通过将“数字公务员”植入各种横屏智能设备中&#xff0c;为民众办理业务提供全程辅助。这种创新不仅优化了政务大厅的…

ToolsSet之:十六进制及二进制编辑运算工具

ToolsSet是微软商店中的一款包含数十种实用工具数百种细分功能的工具集合应用&#xff0c;应用基本功能介绍可以查看以下文章&#xff1a; Windows应用ToolsSet介绍https://blog.csdn.net/BinField/article/details/145898264 ToolsSet中Number菜单下的Hex Operate工具可以进…

DSP处理数字信号做什么用的?

DSP&#xff08;数字信号处理器&#xff09;的核心任务是高效、实时地处理数字信号&#xff0c;通过专用硬件架构和算法优化&#xff0c;完成对信号的转换、增强、分析和控制。以下是DSP处理数字信号的主要用途及典型场景&#xff1a; 1. 信号增强与优化 降噪&#xff08;Noise…

电脑如何保养才能用得更久

在这个数字化的时代&#xff0c;电脑已经成为了我们生活和工作中不可或缺的伙伴。无论是处理工作文档、追剧娱乐&#xff0c;还是进行创意设计&#xff0c;电脑都发挥着至关重要的作用。那么&#xff0c;如何让我们的电脑“健康长寿”&#xff0c;陪伴我们更久呢&#xff1f;今…

设计模式-监听者模式

文章目录 监听者模式 监听者模式 监听器模式指的是事件源经过事件的封装传给监听器&#xff0c;当事件源触发事件之后&#xff0c;监听器收到事件的通知并执行事件回调方法。 -监听者观察者概念定义当范围对象的状态发生变化时&#xff0c;服务器自动调用监听器对象中的方法来…

小程序33-列表渲染

列表渲染 就是指通过循环遍历一个数组或对象&#xff0c;将其中的每个元素渲染到页面上 在组件上使用 wx:for 属性绑定一个数组或对象&#xff0c;既可使用每一项数据重复渲染当前组件 每一项的变量名默认为item&#xff0c;下标变量名默认为index 在使用 wx:for进行遍历的时候…

[ Qt ] | QRadioButton和QCheckBox的使用

目录 QRadioButton 常用属性 clicked(bool)信号、pressed信号、released信号 小项目 QRadioButton QRadioButton是一个单选按钮&#xff0c;也是继承自QAbstractButton(继承自QWidget) 常用属性 checkable 是否能选中 checked 是否已经被选中 autoExclusive 是否排…

[网页五子棋][匹配模式]创建房间类、房间管理器、验证匹配功能,匹配模式小结

文章目录 创建房间类创建房间类实现房间管理器 实现匹配器(3)验证匹配功能问题&#xff1a;匹配按钮不改变验证多开 小结 创建房间类 LOL&#xff0c;通过匹配的方式&#xff0c;自动给你加入到一个房间&#xff0c;也可手动创建游戏房间 这一局游戏&#xff0c;进行的“场所…

Apifox 5 月产品更新|数据模型支持查看「引用资源」、调试 AI 接口可实时预览 Markdown、性能优化

Apifox 新版本上线啦&#xff01; 看看本次版本更新主要涵盖的重点内容&#xff0c;有没有你所关注的功能特性&#xff1a; 自动解析 JSON 参数名和参数值调试 AI 接口时&#xff0c;可预览 Markdown 格式的内容性能优化&#xff1a;新增「实验性功能」选项 使用独立进程执行…

Spring MVC 框架

目录 1.MVC的定义 2.SpringMVC的实际应用 &#xff08;1&#xff09;建立连接 1.RequestMapping注解介绍 2.RequestMapping注解的请求方式 GET请求&#xff1a; POST请求&#xff1a; 指定GET/POST方法类型&#xff1a; &#xff08;2&#xff09;请求 传递参数 1.传…

基于RK3568/RK3588/全志H3/飞腾芯片/音视频通话程序/语音对讲/视频对讲/实时性好/极低延迟

一、前言说明 近期收到几个需求都是做音视频通话&#xff0c;很多人会选择用webrtc的方案&#xff0c;这个当然是个不错的方案&#xff0c;但是依赖的东西太多&#xff0c;而且相关组件代码量很大&#xff0c;开发难度大。所以最终选择自己属性的方案&#xff0c;那就是推流拉…

AI+爆款文案,提示词脚本 ——卫朋

目录 简介 提示词 作者简介 简介 用好AI的前提是脑子里面要有框架。 AI就像是一个刚出生的小孩&#xff0c;没有判断力&#xff0c;疯狂接收世界上的各类信息。 如果没有从小的规则框架约束、没有道德约束&#xff0c;最终的结果就一定是混乱无序的。 AI也是一样&#x…

芯片:数字时代的算力引擎——鲲鹏、升腾、海光、Intel 全景解析

在大模型爆炸的时代&#xff0c;芯片如同现代文明的“数字心脏”&#xff0c;驱动着从智能手机、数据中心到人工智能和超级计算的每一个关键进程。在这场算力竞赛中&#xff0c;华为鲲鹏、升腾、海光以及行业巨头Intel各自扮演着独特而至关重要的角色。本文将深入解析这些核心算…

传输层协议TCP(上)

上一篇https://blog.csdn.net/Small_entreprene/article/details/148143494?fromshareblogdetail&sharetypeblogdetail&sharerId148143494&sharereferPC&sharesourceSmall_entreprene&sharefromfrom_link 上文学习了传输层的协议之一UDP&#xff0c;接下来…