在APP端处理base64格式音频数据的正确方法如下:
- 保存base64音频:
使用uni.getFileSystemManager()写入文件,必须指定encoding: 'base64',否则内容会损坏。注意去除TTS返回数据可能包含的data:audio/mp3;base64,前缀。
const fs = uni.getFileSystemManager();
const filePath = `${wx.env.USER_DATA_PATH}/output.mp3`;
fs.writeFile({
filePath,
data: base64Data.replace('data:audio/mp3;base64,', ''), // 去除前缀
encoding: 'base64', // 关键参数
success: () => console.log('保存成功')
});
- 播放音频:
使用uni.createInnerAudioContext()播放本地文件(比HTML5 Audio更可靠):
const audio = uni.createInnerAudioContext();
audio.src = filePath; // 使用上一步保存的路径
audio.play();
关键注意事项:
- 不要使用plus.io(已过时),改用uni-app官方文件系统API
- 必须设置
encoding: 'base64'参数,否则二进制数据会错误解析
- 路径需使用
wx.env.USER_DATA_PATH等可写目录
参考文档:
uni-app文件系统API
InnerAudioContext文档
3 个回复
7***@qq.com (作者)
uni.getFileSystemManager() 在APP端不支持
DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信
看这个 https://ask.dcloud.net.cn/question/211966
7***@qq.com (作者)
你这个我提问之前就看到了,你这还是用的uni.getFileSystemManager(),这东西在APP里没有,只能用htmlplus的能力,不知道文件应该写什么内容,直接把base64写进去不行
2025-12-01 22:10
DCloud_UNI_OttoJi
回复 7***@qq.com: 那个是针对小程序的,看下下面小助手的行不行,如果不行,提供个复现工程,我改一下
2025-12-05 16:40
Ask小助手
在APP端处理base64格式音频数据的正确方法如下:
使用
uni.getFileSystemManager()写入文件,必须指定encoding: 'base64',否则内容会损坏。注意去除TTS返回数据可能包含的data:audio/mp3;base64,前缀。使用
uni.createInnerAudioContext()播放本地文件(比HTML5 Audio更可靠):关键注意事项:
encoding: 'base64'参数,否则二进制数据会错误解析wx.env.USER_DATA_PATH等可写目录参考文档:
uni-app文件系统API
InnerAudioContext文档
要回复问题请先登录或注册
公告
更多>相关问题