javascript - 音频 blob 的 URL.createObjectURL 在 Firefox 中给出 TypeError

标签 javascript firefox webrtc getusermedia

我正在尝试从 getUserMedia 创建的音频 blob 创建对象 URL。该代码在 Chrome 中有效,但在 Firefox 中存在问题。

错误:

当我调用 stopAudioRecorder() 时,它停止在 audio_player.src = URL.createObjectURL(audio_blob);

类型错误:参数 1 对于 URL.createObjectURL 的任何 2 参数重载均无效。

代码:

  var stopAudioRecorder = function(audio_recorder) {
    var audio_blob, audio_player, new_recording, save_button;

    audio_recorder.stopRecording();
    audio_blob = audio_recorder.getBlob();

    audio_player = document.createElement("audio");
    audio_player.src = URL.createObjectURL(audio_blob);
    audio_player.controls = true;
    audio_player.play();

    $('#new_recording').appendChild(audio_player);

    recording = false;
    return ($("#record_button")).text("Start recording");
  };

我试图通过添加包装函数来提供一些跨浏览器兼容性

function createObjectURL ( file ) {
    if ( window.webkitURL ) {
        return window.webkitURL.createObjectURL( file );
    } else if ( window.URL && window.URL.createObjectURL ) {
        return window.URL.createObjectURL( file );
    } else {
        return null;
    }
}

来自 How to choose between `window.URL.createObjectURL()` and `window.webkitURL.createObjectURL()` based on browser , 但那没有用

最佳答案

在 Firefox 中,您可以直接将 getUserMedia 创建的媒体流提供给音频元素的“mozSrcObject”属性。所以下面的代码应该可以工作:

audio_player.mozSrcObject = audio_blob;

您应该考虑使用 adapter.js文件以说明浏览器差异。

关于javascript - 音频 blob 的 URL.createObjectURL 在 Firefox 中给出 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25481216/

相关文章:

javascript - Mozilla 未使用 kurento 媒体服务器触发iceCandidate(一对多示例)

css - FF3 WinXP != FF3 Ubuntu - 为什么?

html - :active and :hover states in IE and Firefox 问题

node.js - 使用 Node js和socket-io向WebRTC中的许多观众广播(一对多广播)

javascript 放在 head 前面?

firefox - 自动建议 chrome ://URLs in Firefox

javascript - 我可以使用 Javascript 将 Twilio 设备与 MediaStream 连接吗?

javascript - 获取浏览器宽度并根据大小隐藏元素?

javascript - Jquery UI 可拖动元素可以拖动超过所需的宽度

javascript - 使用名称为 Array 的组件时出现奇怪的 React 错误