上传音频文件时,需要将音频时长一起上传,纯 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)
})
来源文章来源:https://www.toymoban.com/news/detail-769837.html
方法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)
}
},
来源文章来源地址https://www.toymoban.com/news/detail-769837.html
到了这里,关于js获取音频时长的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!