js获取音频时长

上传音频文件时,需要将音频时长一起上传,纯 JavaScript 获取音频时长:使用 HTML5 的 Audio 对象和 duration 属性

方法1

// 使用`new Audio()`构造函数创建一个`Audio`对象,将音频文件的URL作为参数传入
// const audio = new Audio(this.audioSrc) // 【可能出现的问题】this.audioSrc(文件上传接口返回的地址)作为音频链接可能出现下图获取不了音频时长的问题,可以将File转为链接 const audio = new Audio(URL.createObjectURL(file.raw))
const audio = new Audio(URL.createObjectURL(file.raw))
// 由于音频需要加载完成才能获取到正确的时长信息,因此需要监听`canplaythrough`事件,该事件表示音频已加载完毕并可以播放。在事件回调函数中进行后续操作。
audio.addEventListener('canplaythrough', () => {
  console.log('audio----', audio)
  console.log('audio.duration----', audio.duration)
  const duration = audio.duration // 在音频加载完成后,通过`audio.duration`获取音频的时长
  // 由于音频需要加载完成才能获取到正确的时长信息,因此在监听事件之前可能无法获取到时长。
  console.log('duration----', duration)
})

在这里插入图片描述

来源

方法2


// 选择文件(音视频)的标签,uploadFile是回调函数
<input type="file" @change="uploadFile">
 
// js
uploadFile(event) {
  var urlFile = event.target.files[0] // 获取链接
  console.log('urlFile----', urlFile)
  var url = URL.createObjectURL(urlFile) // 动态创建一个链接
  var videoTime = ''
  // 判断音频还是视频,创建不同的音视频标签
  // var videoElem =
  //   video.type.indexOf('audio') == -1
  //     ? document.createElement('video')
  //     : document.createElement('audio')
  var videoElem = document.createElement('audio')
  videoElem.src = url // 向标签注入链接
  videoElem.oncanplaythrough = function () {
    // 获取时长,并向下取整
    videoTime = Math.floor(videoElem.duration)
    console.log('videoTime----', videoTime)
  }
},

来源

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值