我使用recorder.js在网页上录制音频,我想让用户可以播放它。 我有一个适用于Chrome桌面的最小测试用例,但在Android上失败了。录音似乎没问题。但音频标签似乎无法播放blob(在Android上)。 https://www.quidoo.fr/html/test_recorder.html
window.AudioContext = window.AudioContext || window.webkitAudioContext;
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
window.URL = window.URL || window.webkitURL;
var audio_context;
var recorder;
function init_recording(){
audio_context= new AudioContext();
navigator.getUserMedia({audio: true},
function (stream){
var source=audio_context.createMediaStreamSource(stream);
recorder=new Recorder(source); // defined in recorder.js
},
function(error) {
alert('No live audio input');
}
);
}
function onRecord(){
recorder.clear();
recorder.record();
}
function onStop(){
recorder.stop();
recorder.exportWAV(function(blob) {
var url = window.URL.createObjectURL(blob);
var myAudio=window.document.getElementById('myAudio');
myAudio.src=url;
});
}
init_recording();

<script src="https://www.quidoo.fr/js/libs/recorder.js"></script>
<button onclick="onRecord()">Record</button>
<button onclick="onStop()">Stop</button>
<audio id="myAudio" controls></audio>
&#13;
我想知道它是否是Chrome for Android错误或者我错过了什么。有没有办法绕过这个而不必在重播之前上传它?
答案 0 :(得分:1)
我不知道你是否仍然遇到这个问题,但我发现了一些替代方案,因为这是Android上Chrome中记录的错误。
编辑:我刚刚找到了这个答案。这是迄今为止最容易解决的问题。 https://stackoverflow.com/a/38591006/4601393
这个替代方案并不完全是用户友好的,但是如果您在移动设备上使用chrome:// flags并启用“在Android上启用统一媒体管道”,则音频标记将成功播放该网址(至少对我而言)它做了)。 资料来源:https://bugs.chromium.org/p/chromium/issues/detail?id=253465
另一种方法是将blob生成为URL,使用XHR下载blob,为下载的blob生成url,并使用音频源中的最后一个url。我实际上并没有使用过最后一种方法,但我在搜索过程中看到过多个用户提到这种方式。
资料来源:https://bugs.chromium.org/p/chromium/issues/detail?id=227476(评论21)
希望很快就能实施修复。