小程序
小游戏
企业微信
微信支付
扫描小程序码分享
使用createInnerAudioContext方法来,存文件到云服务器太费流量了
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
感谢博主分享 。 改进了一个demo 临时文件 + uniapp + vue3 ts 实现的demo。 多段base64音频合并播放。 最终语音为 深圳。(最后的语音有点断,因为太长了评论超长了) // AudioPlayer.vue import { ref } from "vue"; import { testData } from './videoAudioChunks' interface AudioMessage { header: { code: number; message: string; sid: string; status: number; }; payload?: { audio?: { audio: string; bit_depth: number; ced: string; channels: number; encoding: string; frame_size: number; id: string; sample_rate: number; seq: number; status: number; type: string; }; }; } interface AudioChunk { array: Uint8Array; seq: number; id: string; } const playing = ref(false); const currentAudioPath = ref(''); // 生成临时文件路径 const generateTempFilePath = () => { const timestamp = new Date().getTime(); return `${uni.env.USER_DATA_PATH}/temp_audio_${timestamp}.mp3`; }; // 清理临时文件 const cleanupTempFile = (filePath: string) => { const fs = uni.getFileSystemManager(); fs.access({ path: filePath, success: () => { fs.unlink({ filePath, success: () => { console.log('临时文件清理成功'); }, fail: (err) => { console.error('清理临时文件失败:', err); } }); } }); }; // 处理并播放音频 const processAndPlay = () => { const uniqueChunks = new Map<string, AudioChunk>(); const audioJson = testData // 处理每个音频消息 audioJson.forEach((message) => { if (message.header.code === 0 && message.payload?.audio) { const audio = message.payload.audio; const key = `${audio.id}_${audio.seq}`; // 仅处理未见过的块 if (!uniqueChunks.has(key)) { const audioData = audio.audio; uniqueChunks.set(key, { array: new Uint8Array( atob(audioData) .split("") .map((char) => char.charCodeAt(0)) ), seq: audio.seq, id: audio.id, }); } } }); // 按id和seq排序块 const sortedChunks = Array.from(uniqueChunks.values()).sort((a, b) => { if (a.id === b.id) { return a.seq - b.seq; } return parseInt(a.id) - parseInt(b.id); }); // 合并所有音频块 const totalLength = sortedChunks.reduce( (acc, chunk) => acc + chunk.array.length, 0 ); const combinedArray = new Uint8Array(totalLength); let offset = 0; sortedChunks.forEach((chunk) => { combinedArray.set(chunk.array, offset); offset += chunk.array.length; }); // 生成新的临时文件路径 const tempAudioPath = generateTempFilePath(); const fs = uni.getFileSystemManager(); // 清理之前的临时文件 if (currentAudioPath.value) { cleanupTempFile(currentAudioPath.value); } // 将合并后的数据转换为base64 const base64Data = uni.arrayBufferToBase64(combinedArray); // 写入文件并播放 fs.writeFile({ filePath: tempAudioPath, data: base64Data, encoding: "base64", success() { currentAudioPath.value = tempAudioPath; const backgroundAudioManager = uni.getBackgroundAudioManager(); backgroundAudioManager.title = "音频播放"; backgroundAudioManager.src = tempAudioPath; playing.value = true; backgroundAudioManager.onEnded(() => { playing.value = false; // 播放结束后清理临时文件 cleanupTempFile(tempAudioPath); currentAudioPath.value = ''; }); }, fail(err) { console.error("写入音频文件失败:", err); }, }); };
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
完美解决了,使用getFileSystemManager、writeFile 将base64音频转为临时mp3文件地址(encoding: 'base64'),再使用getBackgroundAudioManager播放音频即可,可以跨页面播放
注:使用audio组件会存在兼容问题,部分手机播放不了,也无法跨页面播放音频
const backgroundAudioManager = wx.getBackgroundAudioManager() const audioPath = wx.env.USER_DATA_PATH + '/ordernew.mp3' const fs = wx.getFileSystemManager(); fs.writeFile({ filePath: audioPath, data: item, encoding: 'base64', success(res) { backgroundAudioManager.title = '您有新的订单!' backgroundAudioManager.src = audioPath }, })
你可以用临时路径啊
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
感谢博主分享 。 改进了一个demo 临时文件 + uniapp + vue3 ts 实现的demo。 多段base64音频合并播放。 最终语音为 深圳。(最后的语音有点断,因为太长了评论超长了) // AudioPlayer.vue import { ref } from "vue"; import { testData } from './videoAudioChunks' interface AudioMessage { header: { code: number; message: string; sid: string; status: number; }; payload?: { audio?: { audio: string; bit_depth: number; ced: string; channels: number; encoding: string; frame_size: number; id: string; sample_rate: number; seq: number; status: number; type: string; }; }; } interface AudioChunk { array: Uint8Array; seq: number; id: string; } const playing = ref(false); const currentAudioPath = ref(''); // 生成临时文件路径 const generateTempFilePath = () => { const timestamp = new Date().getTime(); return `${uni.env.USER_DATA_PATH}/temp_audio_${timestamp}.mp3`; }; // 清理临时文件 const cleanupTempFile = (filePath: string) => { const fs = uni.getFileSystemManager(); fs.access({ path: filePath, success: () => { fs.unlink({ filePath, success: () => { console.log('临时文件清理成功'); }, fail: (err) => { console.error('清理临时文件失败:', err); } }); } }); }; // 处理并播放音频 const processAndPlay = () => { const uniqueChunks = new Map<string, AudioChunk>(); const audioJson = testData // 处理每个音频消息 audioJson.forEach((message) => { if (message.header.code === 0 && message.payload?.audio) { const audio = message.payload.audio; const key = `${audio.id}_${audio.seq}`; // 仅处理未见过的块 if (!uniqueChunks.has(key)) { const audioData = audio.audio; uniqueChunks.set(key, { array: new Uint8Array( atob(audioData) .split("") .map((char) => char.charCodeAt(0)) ), seq: audio.seq, id: audio.id, }); } } }); // 按id和seq排序块 const sortedChunks = Array.from(uniqueChunks.values()).sort((a, b) => { if (a.id === b.id) { return a.seq - b.seq; } return parseInt(a.id) - parseInt(b.id); }); // 合并所有音频块 const totalLength = sortedChunks.reduce( (acc, chunk) => acc + chunk.array.length, 0 ); const combinedArray = new Uint8Array(totalLength); let offset = 0; sortedChunks.forEach((chunk) => { combinedArray.set(chunk.array, offset); offset += chunk.array.length; }); // 生成新的临时文件路径 const tempAudioPath = generateTempFilePath(); const fs = uni.getFileSystemManager(); // 清理之前的临时文件 if (currentAudioPath.value) { cleanupTempFile(currentAudioPath.value); } // 将合并后的数据转换为base64 const base64Data = uni.arrayBufferToBase64(combinedArray); // 写入文件并播放 fs.writeFile({ filePath: tempAudioPath, data: base64Data, encoding: "base64", success() { currentAudioPath.value = tempAudioPath; const backgroundAudioManager = uni.getBackgroundAudioManager(); backgroundAudioManager.title = "音频播放"; backgroundAudioManager.src = tempAudioPath; playing.value = true; backgroundAudioManager.onEnded(() => { playing.value = false; // 播放结束后清理临时文件 cleanupTempFile(tempAudioPath); currentAudioPath.value = ''; }); }, fail(err) { console.error("写入音频文件失败:", err); }, }); };
{"header":{"code":0,"message":"success","sid":"2","status":1},"payload":{"audio":{"audio":"//NkxAAMoA5WXhiEAABe0VVrL+PtR0OB/a+6T29pwWOa7k+8+/yH63/Z/UMS2yvkf/hgp5wpf//+7763z6P+lSvq7bcsMkqqJ2RU43AzTArM7OX6pHDmwybUyov93X9H6LBRihrN6/9T//Xou/b+t6u3/+71cqphxlf5LdRtiIyaLmptqo5RQGqLBs4qHOex//NkxFANmKplnhhEOruZ1I9EnQpXla/s6f/RdNfvt68d9fQv/XUZu6pMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqWfK9uOwWQicjfNPItGp2z3zcUoM4cJWW5ns8dMuoyVTV3AX22InC9gFo0s0dy3L5k36D//AKCTyRogVzLkwsy5ihPhhldDkI1Wpv//NkxJwNMAZWPghEALIEYx7HuQkAgF0mJADxE9CZw/pWG7/OtxzZtUxX+foxzLZvQc0v03qUbnjcl3n2LIMUagdTmKUuKTt72L2yqVjZRvFH12NUZFVc1ZTfTLbEJLJH4XUaaMpr5hVSvYyX+yXJIaHLMegk197+7+Z4+7+1Kiu7h09+pWusyqfaMvOaNMPx//NkxM4Ugko9nghFHNu0G8vdWcZbfZWyp7Pxtjf13MaqC9MvrR5re20XxL1ohZZ+dbbvt9vt5qbD6vnqxoLcUiP2WFEqVgTCGFM/2TQmxvuyfSQFaCjF0cknxjaEqBxArJDQISsskaN0mz44x8DgImRYXIIRB8M3PEWHNHAWSJkHOGgjU6HoB4hnCRFynCQK//NkxP8n3DIZVUxYAcgmJ0JkiZBz6CiJjwQATmUjpBCeKrmRgi7LZN09RTLhFCIGxJmRUGTmZmgkQw6br3236BgRcnzcZsvE4kThusuEwx8+YJImRoyf//k/UiX0VGhmX3N0FmiB2TB2eQc0V3of///dX39D/k+m0uLOn2Nz6i+fUjcVdkkkiIXpy1z+ZWkM//NkxOI1VB66X4+QAxRTxGp14ScD09JTn6/LH7bqdZy3XrczbQ8TOLIoSWT4bWbykBijKh6UxDHeyu76EdtQnwkHqsuEwwTUJETOKVRPWn505LDhXM1LDqdefvoR4Z+syTiJ99ZFk3bvnb9+hhx222w4MIofb5ZlbKJyKA4UbddE+cC9I6eWodnatOZrmXjg//NkxI81hDrGV8NgAvF92HEpPJZPTvOg0OCQagmjA/x2RDNf52IZb8kXuOZmrKgiQvkxDMzONIscnpXzOPav9fdyT+WFq9ceHhYO1foSrfODyt3+","bit_depth":16,"ced":"19","channels":1,"encoding":"lame","frame_size":0,"id":"0","sample_rate":24000,"seq":1,"status":1,"type":"0"}}},
{'header': {'code': 0, 'message': 'success', 'sid': '3', 'status': 1}, 'payload': {'audio': {'audio': '//NkxAAMoA5WXhiEAABe0VVrL+PtR0OB/a+6T29pwWOa7k+8+/yH63/Z/UMS2yvkf/hgp5wpf//+7763z6P+lSvq7bcsMkqqJ2RU43AzTArM7OX6pHDmwybUyov93X9H6LBRihrN6/9T//Xou/b+t6u3/+71cqphxlf5LdRtiIyaLmptqo5RQGqLBs4qHOex//NkxFANmKplnhhEOruZ1I9EnQpXla/s6f/RdNfvt68d9fQv/XUZu6pMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqWfK9uOwWQicjfNPItGp2z3zcUoM4cJWW5ns8dMuoyVTV3AX22InC9gFo0s0dy3L5k36D//AKCTyRogVzLkwsy5ihPhhldDkI1Wpv//NkxJwNMAZWPghEALIEYx7HuQkAgF0mJADxE9CZw/pWG7/OtxzZtUxX+foxzLZvQc0v03qUbnjcl3n2LIMUagdTmKUuKTt72L2yqVjZRvFH12NUZFVc1ZTfTLbEJLJH4XUaaMpr5hVSvYyX+yXJIaHLMegk197+7+Z4+7+1Kiu7h09+pWusyqfaMvOaNMPx//NkxM4Ugko9nghFHNu0G8vdWcZbfZWyp7Pxtjf13MaqC9MvrR5re20XxL1ohZZ+dbbvt9vt5qbD6vnqxoLcUiP2WFEqVgTCGFM/2TQmxvuyfSQFaCjF0cknxjaEqBxArJDQISsskaN0mz44x8DgImRYXIIRB8M3PEWHNHAWSJkHOGgjU6HoB4hnCRFynCQK//NkxP8n3DIZVUxYAcgmJ0JkiZBz6CiJjwQATmUjpBCeKrmRgi7LZN09RTLhFCIGxJmRUGTmZmgkQw6br3236BgRcnzcZsvE4kThusuEwx8+YJImRoyf//k/UiX0VGhmX3N0FmiB2TB2eQc0V3of///dX39D/k+m0uLOn2Nz6i+fUjcVdkkkiIXpy1z+ZWkM//NkxOI1VB66X4+QAxRTxGp14ScD09JTn6/LH7bqdZy3XrczbQ8TOLIoSWT4bWbykBijKh6UxDHeyu76EdtQnwkHqsuEwwTUJETOKVRPWn505LDhXM1LDqdefvoR4Z+syTiJ99ZFk3bvnb9+hhx222w4MIofb5ZlbKJyKA4UbddE+cC9I6eWodnatOZrmXjg//NkxI81hDrGV8NgAvF92HEpPJZPTvOg0OCQagmjA/x2RDNf52IZb8kXuOZmrKgiQvkxDMzONIscnpXzOPav9fdyT+WFq9ceHhYO1foSrfODyt3+', 'bit_depth': 16, 'ced': '19', 'channels': 1, 'encoding': 'lame', 'frame_size': 0, 'id': '0', 'sample_rate': 24000, 'seq': 1, 'status': 1, 'type': '0'}}},
{"header":{"code":0,"message":"success","sid":"4","status":1},"payload":{"audio":{"audio":"rOi6u3QDJOdtrZVQjXa8VIIoSrE4k6TK6rBOrsqej2U07VQe/XT9SSWjxUUVSkIiVEG1FBPlF8RPEibk//NkxDwsJDrPDkjNpF1kJojcICVagBPTwbuhdh6GbsDFvViEAI0LAsgMmDq7VpY/bmHAnqD0+gTZ/CBi/X3MjEP3XSBkJ3EHnSDptF20PtXuY7vUg+shD7E6Ts99+nlf37B14LJ3/dkKJvw8ENh87E0EPZhNaRzjTANI5Cws+iCA9b793cuXMCCnMKNiNIph//NkxA4grALnFhhHhVmBZhhYKm4O5BVPqyn70Mn+6oIPKkUegwYP0CW7THZDbqnDsmFoJiTr+eWX58PgQYwPQJuGfVFKnUvKRlx7LT7HMyzsp/F7yqCy4nLDdT5OTtcmMrgzkF8ZXp7k5rNCVyJ0iPHgzLiL5IpghAGrDOoP/sWYYmmHiPrUIVj/ogRglaMT//NkxA4dY7rq7EjFOrbhwKIFWhKpfKMTpLEp1Tqg6eLasgPPpDPSPm5OZ8GMpE0nKpwq5eJOgjaviL2WwvvcyvHDHTi/dTbsgKm2dkpk1A1d5kl62Wt/9msvXX+tt9HL6U/pZ2lServRqPBMWtVsmLLJ0SKaeXd3+schmjo+MxaGSKJxafrVKGO5PPjmiorn//NkxBscSWbu7GGG0vR6By1NXY/uW2ut320zYb22YUORQQvGzM6lbby5mtcGhrgUMHcry9wS1MBYVCRY0bjkAqVYJhU6t7ZqnjmjM8VIwqh+2XdstAJtq0vOyIBOsValStGK1Wl3Z9Y09pqzwQ4loLBAaOZnqLHPFMYzLZjFINKCzEKgjXSDgFBkOyplc5Jm//NkxCwcAdrm7OaEVib1RS32LwA7/ec/1dklkvK6Kl5QEy1JgjlqAsjmylMjqz1KWrN/+n2wz9ECgqbDS8GiSzueqDtuVd4B/2f/57+Gv/Rov5CNWXlmsy7xmtv7KqxhYkY4lmv4IOuUHv1qbNBWBJhHg5qNnUcSYncu8lK2lv48/+gJP1lvk9MmI+6p0FPf//NkxD8cgd7bHtsFCL3CWMo82DE3xkayQ28wVm5HISkv/rUh6PMryiRIF3B9P1/t9czeNJfwEKq///2xYv6NbqwBV7nfKlbkVeUV5hZY4GB8NZ/dWzZZFD/PlSRfXmn8K4whBqdv8/CNEx7trO5iYll84IE3jtApjWb0Vi6Z1WOAG/xT6N7BHRWKrfTfKIbZ//NkxFAbadraVsNLKoXYkwv/+nh3rZEEeL1P4bWtv/9FHc8sLidDKzqoqtABRtJatlmJ+7Gc466OBHOKVI/vksNdQvseGWiPazbZFSIIN35/7aTiLLFxurLi/xUwr/GdRi7OUZjOpQ1W1YXrpZqOjt0Gjlbsxb6KlFjAVpKjmMuhn//9fX/7aLb////+//////NkxGUcK86+dsPKfP/969Do49Q/ndZLbQ==","bit_depth":16,"ced":"19","channels":1,"encoding":"lame","frame_size":0,"id":"1","sample_rate":24000,"seq":2,"status":1,"type":"0"}}},
{'header': {'code': 0, 'message': 'success', 'sid': '5', 'status': 1}, 'payload': {'audio': {'audio': 'rOi6u3QDJOdtrZVQjXa8VIIoSrE4k6TK6rBOrsqej2U07VQe/XT9SSWjxUUVSkIiVEG1FBPlF8RPEibk//NkxDwsJDrPDkjNpF1kJojcICVagBPTwbuhdh6GbsDFvViEAI0LAsgMmDq7VpY/bmHAnqD0+gTZ/CBi/X3MjEP3XSBkJ3EHnSDptF20PtXuY7vUg+shD7E6Ts99+nlf37B14LJ3/dkKJvw8ENh87E0EPZhNaRzjTANI5Cws+iCA9b793cuXMCCnMKNiNIph//NkxA4grALnFhhHhVmBZhhYKm4O5BVPqyn70Mn+6oIPKkUegwYP0CW7THZDbqnDsmFoJiTr+eWX58PgQYwPQJuGfVFKnUvKRlx7LT7HMyzsp/F7yqCy4nLDdT5OTtcmMrgzkF8ZXp7k5rNCVyJ0iPHgzLiL5IpghAGrDOoP/sWYYmmHiPrUIVj/ogRglaMT//NkxA4dY7rq7EjFOrbhwKIFWhKpfKMTpLEp1Tqg6eLasgPPpDPSPm5OZ8GMpE0nKpwq5eJOgjaviL2WwvvcyvHDHTi/dTbsgKm2dkpk1A1d5kl62Wt/9msvXX+tt9HL6U/pZ2lServRqPBMWtVsmLLJ0SKaeXd3+schmjo+MxaGSKJxafrVKGO5PPjmiorn//NkxBscSWbu7GGG0vR6By1NXY/uW2ut320zYb22YUORQQvGzM6lbby5mtcGhrgUMHcry9wS1MBYVCRY0bjkAqVYJhU6t7ZqnjmjM8VIwqh+2XdstAJtq0vOyIBOsValStGK1Wl3Z9Y09pqzwQ4loLBAaOZnqLHPFMYzLZjFINKCzEKgjXSDgFBkOyplc5Jm//NkxCwcAdrm7OaEVib1RS32LwA7/ec/1dklkvK6Kl5QEy1JgjlqAsjmylMjqz1KWrN/+n2wz9ECgqbDS8GiSzueqDtuVd4B/2f/57+Gv/Rov5CNWXlmsy7xmtv7KqxhYkY4lmv4IOuUHv1qbNBWBJhHg5qNnUcSYncu8lK2lv48/+gJP1lvk9MmI+6p0FPf//NkxD8cgd7bHtsFCL3CWMo82DE3xkayQ28wVm5HISkv/rUh6PMryiRIF3B9P1/t9czeNJfwEKq///2xYv6NbqwBV7nfKlbkVeUV5hZY4GB8NZ/dWzZZFD/PlSRfXmn8K4whBqdv8/CNEx7trO5iYll84IE3jtApjWb0Vi6Z1WOAG/xT6N7BHRWKrfTfKIbZ//NkxFAbadraVsNLKoXYkwv/+nh3rZEEeL1P4bWtv/9FHc8sLidDKzqoqtABRtJatlmJ+7Gc466OBHOKVI/vksNdQvseGWiPazbZFSIIN35/7aTiLLFxurLi/xUwr/GdRi7OUZjOpQ1W1YXrpZqOjt0Gjlbsxb6KlFjAVpKjmMuhn//9fX/7aLb////+//////NkxGUcK86+dsPKfP/969Do49Q/ndZLbQ==', 'bit_depth': 16, 'ced': '19', 'channels': 1, 'encoding': 'lame', 'frame_size': 0, 'id': '1', 'sample_rate': 24000, 'seq': 2, 'status': 1, 'type': '0'}}},
{"header":{"code":0,"message":"success","sid":"","status":1},"payload":{"audio":{"audio":"MAAKCFdj+ml3OY/ugFVADV5ZunarKVM3Qlt63D9Myam90pic8yFuSa9P+9zAUlreCi3u8ZF/8B1Is61dGn397fb1EhGPZFPaY3+vRHZXcFU3dP//Sun9/9v/mT/+/wbkJATrewtfs1RLWuGTpIs7+lVTAShHiI3/82TEdxwTGrMW0gUMdr/r/p/q7I/Ce3ev/VRDzkT3xgkRTWjStbmADAs2xnkvITKFrcackxN5UpypJUjjKuAFpxD937oJcpaMUpXVj/v+N61LJbUSX7d9H/X9///T9P/+iMceFDXo7mY3////O1mSPFrWez0qgEMIDMEvc9gkjML7pr60uWLFlVaLQhDVBYP/82TEiRubzuceeksmrHKeVsvDAlek1KJRbIAt7lrQUb9kAYxdHODe0ph7F59cnMmMBkLCeCCyF9IiOpUFxYALKlyY0mOet5cWCALvB81WbiAMNh+ctd//+8RBI8UIt//QwJQVEtFdl1uVxnCUiKnA2K9U5yDvvRAKCXyXZpnfuvnT5p/rduqbZEYGC9OXoFj/82TEnRzo8o0UZtI0tWD2dEtfA4SyevlY+PYln8jmB8G4/sHBgeadn8axhYsbJYliWWzs8q2+hGDjCw/PyQtEMt8OaMS1bDcbhUBA1BoiOwbiWDct+SDOMQBEcSCQoYP19ITMnn92yxCvudk9+mnDk5OLKUb+lfYccpe+U7fuvcnFjlFh5UwivK87XxsL/YP/82TErDTcMqAAeZh4hZza/9JYlq5X/N1ixZTbtr8Oz/2FlV98v806/7+LIm1+Tel5mjkL6vsLAnBMH40au7d//7bM9FYuYj0LR44qVk8Xkh1tOWGjNKSyCFA2A2DMfDEpEolloDojFOwQGRYSrSeov7B2+c3pC/RTLTN1Chh0cQ6dFfI6xCY4HQjDpqk8MwX/82TEWzFUMrQAOxNVSmZlkkFM6OI6LR6XnaATCALoB4aO0RmyBGOEboGyVmSNlnkKJlEmr7pdVSajM88rgzKmnRWaZ1tVcuhSjcUkT7RfbUOrMKOgEqVIjrbep2ettAs0cRIkeGG2q733G4LJUz4PZpHJZ2xdQ+rJa3u7uDDQqKaWKrFLaBmI6kchIGqNVgz/82TEGCHhPtcWzpCQ12Co26RgMH0PBiMmAOLAzOBkSWyRJdKvHIYZm19iD/y3e7EbjERmJ3QxGqmgHA4Guo5rO1+Gm5JVbVrUkcqRlwseKt8seKF3FQZCQqkasRYaFHiIJptgr8oeqAsJP+L5Pr8Q54r5Vw8BGgoRtCtWuqUAWkuWMmoLfZ795cylMrIhKj3/82TEEyDD0tMe2gUp/2QDoOZ6ah5whgyvW4mhPLWrck8CSWMU4cCyDVD+4DXLLd76kMHVVISDYOUuijg7T/7Q62lmfSyPvuWohZD/RfnV3UzXEugljuVyD2//+ydN23TRaIiKVd1Vm2fr+3/////rp2RHYoIWOAaSnXt+lYcABSxzAtB+3C862NK+5CceF37/82TEEx/BzscWwccIry6IVr0UtlnNzaR7vKrtBflnqXzCgitLav2Sojg5OXmCKR6lAGiToqCS1zoGFAf3eH+VbL5w0ZzBhCMG1LM5oJMGJbSDid4BLjTKXfPMAIiF8VdCtbOoXRcrFCITT/1/pVWHATEgbPujRt+Z","bit_depth":16,"ced":"19","channels":1,"encoding":"lame","frame_size":0,"id":"2","sample_rate":24000,"seq":3,"status":1,"type":"0"}}},
];
export {
testData,
}
完美解决了,使用getFileSystemManager、writeFile 将base64音频转为临时mp3文件地址(encoding: 'base64'),再使用getBackgroundAudioManager播放音频即可,可以跨页面播放
注:使用audio组件会存在兼容问题,部分手机播放不了,也无法跨页面播放音频
const backgroundAudioManager = wx.getBackgroundAudioManager() const audioPath = wx.env.USER_DATA_PATH + '/ordernew.mp3' const fs = wx.getFileSystemManager(); fs.writeFile({ filePath: audioPath, data: item, encoding: 'base64', success(res) { backgroundAudioManager.title = '您有新的订单!' backgroundAudioManager.src = audioPath }, })
你可以用临时路径啊