服务器将音频数据保存为base64数据字符串.移动Web客户端获取数据并播放音频.
@H_404_2@但是在iOS和Android中的移动Chrome中发现了一个问题,即带有数据uri的音频无法播放(issue).
@H_404_2@为了使它工作,我想知道在客户端是否有办法将数据字符串转换为音频文件(如.m4a)并将音频src链接到文件?
@R_301_323@
使用网络音频api直接计算出来,在iOS和Android的移动浏览器中具有最佳兼容性.
function base64ToArrayBuffer(base64) { var binaryString = window.atob(base64); var len = binaryString.length; var bytes = new Uint8Array( len ); for (var i = 0; i < len; i++) { bytes[i] = binaryString.charCodeAt(i); } return bytes.buffer; } var base64 = '<data string retrieved from server>'; var audioContext = new (window.AudioContext || window.webkitAudioContext)(); var source = audioContext.createBufferSource(); audioContext.decodeAudioData(base64ToArrayBuffer(base64),function(buffer) { source.buffer = buffer; source.connect(audioContext.destination); source.start(0); });@H_404_2@它适用于iOS Safari,Chrome和Android默认浏览器和Chrome.