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

相关推荐
内核笔记4 分钟前
Linux 音视频入门到实战专栏(视频篇)视频编解码 MPP
linux·音视频·视频编解码
甘北13 分钟前
go采集注册表
开发语言·后端·golang
ordinary9014 分钟前
postcss插件-实现vw适配
前端·javascript·postcss
yqcoder23 分钟前
一个产品从开发到上线需要几个步骤
前端·javascript
江木12332 分钟前
CUDA C 编程入门学习记录
c语言·开发语言·学习
xinxin882239 分钟前
Android 上删除的短信存储在哪里 - 如何恢复
android·windows·智能手机·电脑·音视频·开源软件
不知名美食探索家1 小时前
【10】Golang实用且神奇的开发操作总结
服务器·开发语言·golang
青青子衿越1 小时前
两个不同大小的字想底部对齐 css前端开发
前端·javascript·html
刘争Stanley2 小时前
Android系统开发(八):从麦克风到扬声器,音频HAL框架的奇妙之旅
android·c语言·framework·音视频·框架·c·hal
木觞清2 小时前
数据可视化大屏设计与实现
javascript·python·flask·html·echarts·css3·数据可视化