通过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的上下文。

相关推荐
asdfg1258963几秒前
无用空数组的用法:numberList.toArray(new Integer[0])
java·开发语言
likerhood4 分钟前
认识 JVM:Java 程序背后的那台“隐形计算机”
java·开发语言·jvm
wangchunting4 分钟前
Java9功能更新说明
java·开发语言
~|Bernard|5 分钟前
三,go语言中channel的底层原理
开发语言·后端·golang
likerhood7 分钟前
Java 反射与注解的详细讲解
java·开发语言·数据库
asdfg12589638 分钟前
从Java的设计模式看接口和实现---List与ArrayList
java·开发语言·设计模式·面向对象·面向接口
不会飞的鲨鱼8 分钟前
观鸟网 RSA加密 AES 解密
javascript·爬虫·python
云深麋鹿13 分钟前
C++ | map&set的使用
开发语言·c++
allnlei13 分钟前
gRPC C++ Callback API(Reactor 模式)介绍
开发语言·c++
Eiceblue13 分钟前
锁定单元格 :C# 控制 Excel 单元格编辑权限
开发语言·c#·excel