Chrome Android 个重放录音的错误

Chrome for Android bugs in replaying audio recording

我正在使用 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>

我想知道它是否是 Chrome for Android 错误,或者我是否遗漏了什么。有没有办法绕过这个而不必在重播之前上传它?

我不知道你是否仍然遇到这个问题,但我找到了几个替代方案,因为这是 Android 上 Chrome 中记录的错误。

编辑:我也刚找到这个答案。这是迄今为止最简单的修复方法。

这种替代方法对用户来说并不友好,但如果您在移动设备上转到 chrome://flags 并启用 "enables the unified media pipeline on Android",音频标签将成功播放 url(至少对我来说是这样)。 资料来源: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)

希望尽快实施修复。