t***@163.com
t***@163.com
  • 发布:2025-03-12 12:26
  • 更新:2025-03-12 12:26
  • 阅读:16

拼接多个base64音频

分类:uni-app

const koko = async (items) => {
try {
const filePath = ${wx.env.USER_DATA_PATH}/combined_audio.mp3;
const processBase64 = (base64) => {
base64 = base64.replace(/^data:audio\/\w+;base64,/, '').replace(/[\n\r\s]/g, '');
const pad = (4 - (base64.length % 4)) % 4;
return base64 + '='.repeat(pad);
};
const buffers = await Promise.all(items.map(item =>
uni.base64ToArrayBuffer(processBase64(item))
));
const merged = new Uint8Array(buffers.reduce((acc, buf) => acc + buf.byteLength, 0));
let offset = 0;
buffers.forEach(buf => {
merged.set(new Uint8Array(buf), offset);
offset += buf.byteLength;
});
await new Promise((resolve, reject) => {
uni.getFileSystemManager().writeFile({
filePath,
data: merged.buffer,
encoding: 'binary',
success: resolve,
fail: reject
});
});
const audio = uni.createInnerAudioContext();
audio.src = filePath;
audio.play();
voiceList.value = []
console.log('播放合并音频');
} catch (err) {
console.error('处理失败:', err);
}
};

items传入的是一个数组,数组内有两个base64格式的音频,我现在成功的将两个base64音频成功拼接,但是触发 uni.createInnerAudioContext()朗读出来的时候,却只读出数组中下标为0的数据,这是为什么?既没有报错,也有输出,

2025-03-12 12:26 负责人:无 分享
已邀请:

要回复问题请先登录注册