HTML中怎么用JavaScript获取视频时长

来源:IPIPP.com作者:头衔:全栈工程师
导读:本期聚焦于小伙伴创作的《HTML中怎么用JavaScript获取视频时长》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《HTML中怎么用JavaScript获取视频时长》有用,将其分享出去将是对创作者最好的鼓励。

在前端页面开发中,经常需要展示视频的总时长,或者基于时长实现播放进度控制、剩余时间计算等功能,这时候就需要通过JavaScript获取视频元素的时长信息。下面我们就来详细讲解具体的实现方法。

HTML中怎么用JavaScript获取视频时长

核心原理

HTML中的<video>元素属于HTMLMediaElement接口的实现,该接口提供了很多和媒体相关的属性,其中duration属性就是用来获取媒体资源总时长的,单位是秒,返回值是一个浮点数。

需要注意的是,视频的时长信息需要等视频的元数据加载完成之后才能获取到,如果直接在页面加载完成就读取duration,很可能会得到NaN的结果,因为此时浏览器还没有解析到视频的时长信息。

实现步骤

1. 编写HTML视频结构

首先在页面中添加一个<video>元素,设置好视频源,同时可以给元素加一个id方便后续获取。

<video id="myVideo" controls>
  <source src="http://ipipp.com/video/sample.mp4" type="video/mp4">
  您的浏览器不支持video标签
</video>
<p>视频总时长:<span id="durationSpan">加载中...</span>秒</p>

2. 监听元数据加载事件

我们需要监听视频元素的loadedmetadata事件,这个事件会在视频的元数据(包括时长、尺寸、编码格式等)加载完成后触发,此时再去读取duration属性就能得到正确的值。

3. 编写JavaScript获取逻辑

通过DOM方法获取视频元素,绑定loadedmetadata事件监听器,在回调函数中读取时长并展示到页面上。

// 获取视频元素
const videoElement = document.getElementById('myVideo');
// 获取展示时长的span元素
const durationSpan = document.getElementById('durationSpan');

// 监听元数据加载完成事件
videoElement.addEventListener('loadedmetadata', function() {
  // 获取视频时长,单位是秒
  const duration = videoElement.duration;
  // 将时长保留两位小数展示
  durationSpan.textContent = duration.toFixed(2);
});

// 备选方案:如果视频已经加载过,直接读取时长
if (videoElement.readyState >= 1) {
  const duration = videoElement.duration;
  durationSpan.textContent = duration.toFixed(2);
}

常见问题说明

  • 如果获取到的值是NaN,首先检查视频资源是否正常可访问,其次确认是不是在元数据加载前就读取了duration属性,需要等loadedmetadata事件触发后再读取。
  • 跨域视频资源如果没有正确的CORS配置,可能会导致无法获取元数据,这时候需要服务端配置对应的跨域响应头。
  • duration属性返回的是秒数,如果需要转换成分:秒的格式,可以自行编写转换函数。

时长格式转换示例

如果需要把秒数转换成更易读的分:秒格式,可以使用下面的转换函数:

function formatDuration(seconds) {
  const minutes = Math.floor(seconds / 60);
  const remainingSeconds = Math.floor(seconds % 60);
  // 补零处理,保证两位数字
  const formattedMinutes = minutes.toString().padStart(2, '0');
  const formattedSeconds = remainingSeconds.toString().padStart(2, '0');
  return `${formattedMinutes}:${formattedSeconds}`;
}

// 使用示例
const videoDuration = videoElement.duration;
console.log(formatDuration(videoDuration)); // 输出类似 05:30 的格式

总结

通过JavaScript获取HTML视频时长的核心就是利用HTMLMediaElement的duration属性,同时要注意等待视频元数据加载完成后再读取该属性,避免出现获取不到或者值为NaN的情况。如果需要展示更友好的时长格式,可以自行编写转换逻辑,适配不同的业务需求。

JavaScriptHTML_video视频时长HTMLMediaElement修改时间:2026-05-27 00:41:32

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。