javascript - Android 上的 Chrome 无法播放对象 URL 中录制的音频

标签 javascript html google-chrome web-audio-api fileapi

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

相关文章:

如果滚动位置 > 100,则为 Javascript

javascript - 在 JavaScript 中,eval(010) 返回 8

javascript - 如何更改 Javascript 中导航栏的颜色?

javascript - 使用 Javascript 删除 html 行和删除列按钮

javascript - 使用 onClick 事件时函数仅执行一次 [javascript]

javascript - 此条目存在检查中可能出现什么问题?

javascript - 更新表中的 XMLHttpRequest API 显示

javascript - Chrome 扩展程序内容脚本和 document.ready 事件

css - 位置 :fixed not working in Chrome? 的子项的 z-index 是否有解决方法

javascript - Chrome 非事件选项卡中的通知声音