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

相关推荐
ONLYOFFICE1 分钟前
ONLYOFFICE协作空间API指南:使用JavaScript SDK为每个用户结构化协作房间
javascript·编辑器·onlyoffice·office·文档编辑与协作
硬件学长森哥3 分钟前
Android音视频多媒体开源框架基础大全
android·图像处理·音视频
小猫咪怎么会有坏心思呢3 分钟前
华为OD机考-找座位-逻辑分析(JAVA 2025B卷)
java·开发语言·华为od
泪光29296 分钟前
洛谷自己创建的一个小比赛【c++】
开发语言·c++
开开心心就好11 分钟前
高效账号信息管理工具,可安全随机生成密码
javascript·安全·docker·智能手机·pdf·word·excel
比特森林探险记19 分钟前
GO 入门小项目-博客-结合Gin Gorm
开发语言·golang·gin
z_y_j22997043831 分钟前
vue前端项目打包和部署
前端·javascript·vue.js
不喝可乐_32 分钟前
Node.js 检测视频链接是否可以播放(批量检测)
node.js·音视频
lbchenxy32 分钟前
antd vue a-range-picker如何设置不能选择当前和之后的时间,包含时分秒
前端·javascript·vue.js
傻傻虎虎36 分钟前
【QT】自动更新库QSimpleUpdater使用实例封装
开发语言·qt