)
背景步骤一将相关JS库文件放入项目public目录下或将js放到三方服务器后引用以下以静态文件为例步骤二在index.html中引入文件|步骤三(页面代码引用)script setup ... // 处理amr文件将amr文件转换为WAV文件 const convertAmrToWav async (file, e) { const reader new FileReader() reader.onload function (e) { if (file.name.indexOf(.amr) ! -1) { const data new Uint8Array(e.target.result) if (AMRWB.getAMRHeader(data) AMRWB.AMR_HEADER) { // 二进制文件头为#!AMR-WB文件头 AMRWB.decodeInit() const buffer AMRWB.toWAV(data) // amr转wav AMRWB.decodeExit() return convertBufferToBlob(buffer, audio/wav, file, e) } else if (AMR.getAMRHeader(data) AMR.AMR_HEADER) { // 二进制文件头为#!AMR文件头 const buffer AMR.toWAV(data) // amr转wav return convertBufferToBlob(buffer, audio/wav, file, e) } else { e ? e.target.value : ; return showToast(文件格式不支持) } } else { const buffer e.target.result return convertBufferToBlob(buffer, audio/x-wav, file, e) } } reader.readAsArrayBuffer(file) } // 将buffer文件转换为指定name的blob文件并上传 const convertBufferToBlob (buffer, type, file, e) { const fileName file.name.replace(/\.amr$/i, .wav); const blob_url new Blob([buffer], { type: type, }) // 将 Blob 转换为 File文件流并指定文件名便于公共上传 const new_file new File([blob_url], ${fileName}, { type: blob_url.type, lastModified: Date.now() }); return getUploadImg(new_file, e) // 将buffer文件转换为浏览器可播放的URL // const url URL.createObjectURL( // new Blob([buffer], { // name: file.name, // type: audio/wav, // }) // ) // audioElement.src url } // 上传文件流到服务器 const getUploadImg async (file, e) { } /script