通过FileReader API获取上传音频的长度

前言

FileReader 接口允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 FileBlob 对象指定要读取的文件或数据。

实现

调用FileReader API,并通过(window.AudioContext || window.webkitAudioContext)()创建音频上下文对象实现

代码示例

关键代码

const customRequest = (file) => {
  //创建FileReader
  const fileReader = new FileReader();
  //读取成功完成时触发
  fileReader.onload = (event) => {
    const arrayBuffer = event.target.result;
    //创建音频上下文对象
    const audioContext = new (window.AudioContext ||
      window.webkitAudioContext)();
    audioContext.decodeAudioData(arrayBuffer, async (buffer) => {
      const duration = Math.floor(buffer.duration); // 获取音频时长
      console.log("音频时长:", duration);
      //下面可做对音频时长限制的操作
    });
  };
  //当读取由于错误而失败时触发。
  fileReader.onerror = (error) => {
    console.error("Error reading file:", error);
  };
  //开始读取指定的 Blob 中的内容,读取完成,result 属性中将包含一个表示文件数据的 ArrayBuffer 对象
  fileReader.readAsArrayBuffer(file);
};

注意:最后一定要记得调用readAsArrayBuffe来读取内容,不然获取不到FileReader的上下文。

相关推荐
本郡主是喵5 分钟前
由于安装nvm 引发的vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
前端·javascript·vue.js
界面开发小八哥9 分钟前
甘特图组件DHTMLX Gantt中文教程 - 如何实现持久UI状态
javascript·ui·项目管理·甘特图·dhtmlx
托尼沙滩裤14 分钟前
【Vue3】自动化路由配置:Vue3与unplugin-vue-router的完美结合
javascript·vue.js·自动化
音视频牛哥15 分钟前
实时音视频之医疗手术示教技术方案探究
音视频·实时音视频·医疗培训·手术示教·rtmp手术示教·rtmp推送·rtmp播放
纵横君=_=35 分钟前
Day7 | Java框架 | SpringMVC
java·开发语言
凯U编程44 分钟前
QT——事件处理机制(9.10)
开发语言·qt
自自Z1 小时前
9月11日:QT
开发语言·qt
长潇若雪1 小时前
《C Primer Plus》第 11 章复习题和编程练习
c语言·开发语言·经验分享
艾伦~耶格尔1 小时前
常用Java API
java·开发语言·学习
L Jiawen1 小时前
【Python · Pytorch】配置cuda环境 & cuDNN库
开发语言·pytorch·python