我正在使用 Recorder.js 通过音频 API 录制一些内容,我想让用户有机会在将其上传到服务器之前收听他们的录音。录制代码很大程度上基于supplied example ,但我没有导出到 WAV 进行下载,而是使用 blob 并设置音频元素的 src 属性进行播放。负责的代码(停止录制后调用)如下所示:
function createAudioPlayer() {
recorder && recorder.exportWAV(function (blob) {
var url = URL.createObjectURL(blob);
var au = document.getElementById('recording');
au.src = url;
});
}
它的结果是这样的:
<audio id="recording" src="blob:https%3A//example.com/499ca96f-37b2-4515-bd1b-3c298f201dbd" controls="controls"></audio>
可以在 OS X 10.11 上的 Chrome 50 和 Firefox 46 以及 Windows 10 上的 Edge 13 中播放此音频。Android 6.0 上的 Chrome 50 可以正常录制和上传,但在 play()
时拒绝播放并出现以下错误在音频元素上调用:
Uncaught (in promise) DOMException: The element has no supported sources.
我尝试添加 type="audio/wav"
但这没有用。如果我从 blob 上传文件(使用文件 API 和 XHR)并使用 src
属性具有服务器上 wav 文件的“正常”URL,它也可以正常播放。应该更改哪些内容以便用户可以在上传之前收听录音?
最佳答案
尚不支持。我们正在努力解决这个问题,希望能在 Chrome 51 中解决。( https://groups.google.com/a/chromium.org/forum/#!topic/chromium-reviews/Qi4dLcKjcCM )
关于javascript - Android 上的 Chrome 无法播放对象 URL 中录制的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37140445/