JS获取视频链接时长的两种实现方案

作者:代码拾荒时间:2026-10-31 14:13:12浏览:523

本文介绍在JavaScript中获取视频时长的两种常见方法。首先通过动态创建Video元素监听loadedmetadata事件,从URL获取在线视频时长;其次基于ng-zorro组件展示上传文件时的时长获取逻辑,利用Audio对象或Video元素解析本地文件元数据。文章包含完整代码示例与注意事项,帮助开发者实现视频上传前的时长校验功能。

JS如何通过视频链接获取视频时长

该函数利用传入的URL创建一个Video元素,并在loadedmetadata事件触发后,返回包含视频持续时间的Promise。同时,代码也处理了可能出现的异常情况。

需要注意的是,Video元素的duration属性返回的是秒数,如需更友好的展示格式,建议进行单位转换。

function getVideoDuration(url) {
  return new Promise((resolve, reject) => {
    const video = document.createElement('video');
    video.src = url;
    video.addEventListener('loadedmetadata', () => {
      resolve(video.duration);
      video.remove();
    });
    video.addEventListener('error', () => {
      resolve(null);
      video.remove();
    });
    document.body.appendChild(video);
  });
}
// Example usage
const videoUrl = 'https://www.example.com/video.mp4';
getVideoDuration(videoUrl)
  .then((duration) => {
    if (duration) {
      console.log('Video duration:', duration);
    } else {
      console.log('Failed to get video duration');
    }
  });

JS--获取上传视频文件的时长(秒)

以下代码示例基于ng-zorro组件,供参考:

 beforeVideoUpload = (file: File) => {
    return new Observable((observer: Observer<boolean>) => {
      // 判断文件类型
      const isVideoFile = /video\/(wmv|asf|asx|rm|rmvb|mpg|mpeg|mpe|3gp|mov|mp4|m4v|avi|dat|mkv|flv|vob)$/.test(file.type);
      console.log('是否为视频类型:', isVideoFile);
      // 获取视频时长
      const url = URL.createObjectURL(file);
      const audioElement = new Audio(url);
      let videoSeconds;
      audioElement.addEventListener('loadedmetadata', (_event) => {
        videoSeconds = Math.floor(audioElement.duration);
        console.log('视频时长为', videoSeconds);
        observer.next(true);
        observer.complete();
      });
    });
  };

至此,关于JS获取视频链接时长的介绍完毕。如需了解更多相关技术内容,可查阅本站过往文章或继续阅读后续章节,感谢支持!

作者最新文章