新闻中心
使用HTML5 Video API在Web页面中获取视频播放时长

本教程详细介绍
了如何在web页面中利用html5
在现代Web开发中,经常需要在页面上嵌入视频并显示其相关信息,其中视频的播放时长是一个常见的需求。虽然我们可以在HTML中简单地使用
核心概念:视频时长与加载事件
HTML5的
为了确保在 duration 属性可用时进行访问,我们需要监听视频元素的特定事件。最常用的事件是 loadedmetadata 和 loadeddata:
- loadedmetadata: 当视频的元数据(包括时长、尺寸、文本轨道等)加载完毕时触发。这是获取视频时长的理想时机,因为它发生在视频数据开始加载之前,效率更高。
- loadeddata: 当视频的第一帧数据加载完成,并且可以开始播放时触发。这个事件比 loadedmetadata 稍晚,但同样可以用来获取时长。
通常,为了尽快获取时长信息,推荐使用 loadedmetadata 事件。
HTML结构:嵌入视频并准备显示区域
首先,我们需要一个HTML结构来嵌入视频并提供一个区域来显示视频时长。给视频元素一个 id 便于J*aScript访问,同时添加一个 或 标签来承载时长信息。 在上述HTML中: AI视频生成器,快速轻松地将您的想法转化为视觉上令人惊叹的视频。 现在,我们需要编写J*aScript代码来监听 myVideo 元素的 loadedmetadata 事件,并在事件触发时获取 duration 属性的值,然后将其显示在 durationDisplay 元素中。 为了更好的用户体验,通常会将时长(以秒为单位)转换为更易读的格式,如“分钟:秒”或“小时:分钟:秒”。 在上述J*aScript代码中: 将上述HTML和J*aScript代码分别保存为 index.html 和 app.js,并确保 app.js 文件通过 标签在 index.html 中正确引用。打开 index.html,您将看到视频播放器及其下方显示的视频时长。 通过利用HTML5 <!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>获取视频播放时长</title>
<style>
body { font-family: sans-serif; margin: 20px; }
video { max-width: 600px; border: 1px solid #ccc; display: block; margin-bottom: 10px; }
#durationDisplay { font-weight: bold; color: #333; }
</style>
</head>
<body>
<h1>视频播放时长示例</h1>
<video id="myVideo" controls preload="metadata">
<source src="https://firebasestorage.googleapis.com/v0/b/qriositynet-dev.appspot.com/o/chat%2FMgttfKqKIDhQ6bgtgy6V%2Fvideos%2F1663229371400watermelon-bunny.mp4?alt=media&token=722nb260-c65b-46fe-8805-4a5a742f282d" type="video/mp4" />
您的浏览器不支持HTML5视频。
</video>
<p>视频时长:<span id="durationDisplay">加载中...</span></p>
<script src="app.js"></script>
</body>
</html>
Visla
100
查看详情
J*aScript实现:监听事件并获取时长
// app.js
document.addEventListener('DOMContentLoaded', function() {
const videoElement = document.getElementById('myVideo');
const durationDisplay = document.getElementById('durationDisplay');
// 辅助函数:将秒数格式化为 MM:SS 或 HH:MM:SS 格式
function formatDuration(seconds) {
const hours = Math.floor(seconds / 3600);
const minutes = Math.floor((seconds % 3600) / 60);
const remainingSeconds = Math.floor(seconds % 60);
const formattedMinutes = String(minutes).padStart(2, '0');
const formattedSeconds = String(remainingSeconds).padStart(2, '0');
if (hours > 0) {
const formattedHours = String(hours).padStart(2, '0');
return `${formattedHours}:${formattedMinutes}:${formattedSeconds}`;
} else {
return `${formattedMinutes}:${formattedSeconds}`;
}
}
// 监听 loadedmetadata 事件
videoElement.addEventListener('loadedmetadata', function() {
if (videoElement.duration && !isNaN(videoElement.duration)) {
const durationInSeconds = videoElement.duration;
durationDisplay.textContent = formatDuration(durationInSeconds);
console.log("视频时长 (秒):", durationInSeconds);
console.log("视频时长 (格式化):", formatDuration(durationInSeconds));
} else {
durationDisplay.textContent = '无法获取时长';
console.warn('视频元数据加载完成,但时长属性不可用。');
}
});
// 错误处理:如果视频加载失败
videoElement.addEventListener('error', function() {
durationDisplay.textContent = '视频加载失败';
console.error('视频加载失败,请检查链接或文件。');
});
// 如果视频已经加载了元数据(例如,页面缓存),则立即尝试获取时长
// 检查 readyState 是否已达到 H*E_METADATA (2) 或更高
if (videoElement.readyState >= 2) {
if (videoElement.duration && !isNaN(videoElement.duration)) {
const durationInSeconds = videoElement.duration;
durationDisplay.textContent = formatDuration(durationInSeconds);
console.log("视频时长 (秒,DOM加载时已可用):", durationInSeconds);
} else {
durationDisplay.textContent = '无法获取时长';
console.warn('DOM加载时视频元数据已就绪,但时长属性不可用。');
}
}
});
完整示例
注意事项
总结
以上就是使用HTML5 Video API在Web页面中获取视频播放时长的详细内容,更多请关注其它相关文章!
# 个人网站推广app
# 您的
# 这是
# 鼠标
# 我们可以
# 更快
# 提供一个
# 兰州优化seo方案报价
# 平潭网站seo技术
# 视频播放
# www网站建设设计维护
# 公众号线上营销推广
# 营销推广市场定位方法
# 网站优化员招聘要求
# 天津网站推广营销费用
# 枣庄seo推广如何操作
# 八网站发布与推广
# 回调函数
# java
# html
# js
# go
# html5
# 编码
# 浏览器
# app
# javascript
# ai
# ios
# 跨域
# g
# 时长
# 加载
# 回调
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Log4j Console Appender性能瓶颈与高并发优化策略
KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法
整合Supabase认证与Django模型:跨模式迁移的解决方案
C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法
c++如何使用TBB库进行任务并行_c++ Intel线程构建模块
腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程
PHP中SSG-WSG API的AES加密实践:正确使用初始化向量
QQ网页版官方账号入口 QQ网页版网页版登录指南
HTML元素状态管理:根据DIV内容动态启用/禁用按钮
Python实时数据流中的动态最值查找策略
火锅吃太多会怎样 火锅吃太多会上火吗
必由学官方登录入口 必由学教师学生账号快速访问
蛙漫安全无毒 官方认证的绿色入口
HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解
J*aScript实现单选按钮与关联输入框的联动禁用教程
使用Pandas转换并合并DataFrame:多列映射至统一结构
CSS Grid如何控制元素对齐_align-items与justify-items组合使用
优化大型XML文件解析:基于Python流式处理的内存高效方案
神庙逃亡小游戏在线玩 神庙逃亡小游戏入口
J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程
Windows10怎么开启存储感知 Windows10系统设置自动清理临时文件释放C盘空间【教程】
动漫花园资源网使用步骤_动漫花园资源网下载流程
谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航
ArrayList与LinkedList操作复杂度详解:遍历与修改
怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】
荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程
优化HTML表单样式:解决输入框焦点跳动与元素间距问题
探索高级语言到原生C/C++的转译:挑战与内存管理策略
服务端验证_j*ascript输入检查
Python中高效且防溢出的双曲正弦计算:基于对数空间的优化策略
Python字典中优雅地迭代剩余元素的方法
微信商城在哪里打开【步骤】
生成rdflib自定义SPARQL函数:参数匹配与实践指南
C++如何比较两个字符串_C++ string compare函数与操作符对比
J*aScript数组对象转换:按指定键分组与值收集
在命令行怎么运行html项目_命令行运行html项目方法【教程】
邮政快递单号查询入口 邮政快递物流信息在线查询入口
漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道
从OpenAI API响应中高效提取生成文本
创客贴用户入口官网登录 创客贴网页版电脑版系统
没有大陆身份证/银行卡如何实名微信? 亲测有效的几种方法分享
AO3官方可用镜像 Archive of Our Own网页版最新入口
浏览器打开即用 美图秀秀网页版入口
ACG动漫手机版官网入口 手机ACG动漫APP在线观看正版
中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】
html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】
AO3同人作品网入口 AO3搜索引擎官网永久地址
格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施
在J*a中如何使用BigDecimal进行高精度计算_BigDecimal类应用指南
12306几点到几点不能订票? | 官方最新系统维护时间全解析


2025-11-16
浏览次数:次
返回列表