当前位置: 首页 > news >正文

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

前言

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

实现 

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

代码示例

关键代码

const customRequest = (file) => {//创建FileReaderconst 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的上下文。

相关文章:

  • 【Python系列】 并发编程在数据处理中的应用
  • 第二届海南大数据创新应用大赛 - 算法赛道冠军比赛攻略_海南新境界队
  • 设计模式22-迭代器模式
  • 【运维】深入理解 Linux 中的 `mv` 命令,使用 `mv` 移动所有文件但排除特定文件或文件夹
  • SQL Server数据库 创建表,和表的增删改查
  • 浮毛怎么去掉比较方便?最最高效解决办法宠物空气净化器分享
  • 【C++例题 / 训练】二分算法(模板 例题)
  • 【本社翻译】Unity官方XR开发电子书
  • uniapp去掉页面导航条
  • 利用贝叶斯和决策树 来进行医疗诊断的
  • SQLserver中的增删改查和数据类型
  • 如何免费获取乡镇级边界数据geoJson数据
  • 微服务可用性设计
  • 【ARM系统】基础知识总结
  • 什么是SD NAND?
  • 收藏网友的 源程序下载网
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • CSS 专业技巧
  • HTTP 简介
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • javascript 哈希表
  • JavaScript 奇技淫巧
  • Java方法详解
  • Java应用性能调优
  • Python学习之路13-记分
  • Unix命令
  • Vue组件定义
  • 爱情 北京女病人
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 什么软件可以剪辑音乐?
  • 思考 CSS 架构
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 一个完整Java Web项目背后的密码
  • 原生Ajax
  • 智能合约开发环境搭建及Hello World合约
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (1)(1.13) SiK无线电高级配置(五)
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (Oracle)SQL优化技巧(一):分页查询
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (第61天)多租户架构(CDB/PDB)
  • (二)pulsar安装在独立的docker中,python测试
  • (二)原生js案例之数码时钟计时
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (三)终结任务
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)http-server应用
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • (自用)仿写程序
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离