在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文档
2 个回复
7***@qq.com (作者)
uni.getFileSystemManager() 在APP端不支持
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文档
要回复问题请先登录或注册
公告
更多>相关问题