如何使Firefox WebExtension使用麦克风

时间:2017-07-19 13:41:07

标签: javascript firefox microphone firefox-webextensions

我一直在尝试制作Firefox扩展,它需要具备用户录制语音留言的能力。 我已经创建了一个可以工作的网页,但是当我在扩展中添加相同的代码(所有正确的manifest.json更改)时,它不起作用。它根本不会要求用户访问麦克风。

我浏览了Firefox网站上的扩展示例,但我找不到解决方案。

如果可以,扩展程序如何访问用户麦克风?

代码:

window.addEventListener('load', initAudio);

initAudio 功能:

function initAudio() {
console.log("initAudio");
if (!navigator.getUserMedia)
    navigator.getUserMedia = navigator.webkitGetUserMedia || navigator.mediaDevices.mozGetUserMedia;
if (!navigator.cancelAnimationFrame)
    navigator.cancelAnimationFrame = navigator.webkitCancelAnimationFrame || navigator.mozCancelAnimationFrame;
if (!navigator.requestAnimationFrame)
    navigator.requestAnimationFrame = navigator.webkitRequestAnimationFrame || navigator.mozRequestAnimationFrame;

console.log("initAudio");
navigator.mediaDevices.getUserMedia(
    {
        "audio": {
            "mandatory": {
                "googEchoCancellation": "false",
                "googAutoGainControl": "false",
                "googNoiseSuppression": "false",
                "googHighpassFilter": "false"
            },
            "optional": []
        },
    }, gotStream, function (e) {
        console.log('Error getting audio');
        $("#controls").css("background", "red");
        console.log(e);
    });
}

我没有获得控制台输出

  

获取音频时出错

但我也没有从 gotStream 函数获得控制台输出。

稍后,我有一个触发录制过程的HTML对象:

    <img id="record" src="./res/icons/mic.png" class="">

随附Javascript代码:

$(document).ready(function () {
$("#record").click(function () {
    console.log("trigerred", this);
    toggleRecording(this);
});
});

函数 toggleRecording 确实可以正常运行,但由于Recorder对象未被初始化(它在 gotStream 函数中被初始化),它无法工作。

这是manifest.json文件:

    {

  "manifest_version": 2,
  "name": "Speech",
  "version": "1.1",

  "description": "blank desript",
  "icons": {
    "16": "popup/res/icons/icon16.png",
    "32": "popup/res/icons/icon32.png",
    "48": "popup/res/icons/icon48.png",
    "128": "popup/res/icons/icon128.png"
  },

  "permissions": [
    "storage"
  ],

  "browser_action": {
    "default_icon": {
      "32": "popup/res/icons/icon.png"
    },
    "default_title": "Speech",
    "default_popup": "popup/popup.html"
  },

  "content_scripts": [
    {
      "js": [
        "popup/res/script/jquery-3.2.1.js",
        "popup/res/script/audiodisplay.js",
        "popup/res/script/recorder.js",
        "popup/res/script/recorderWorker.js",
        "popup/res/script/resampler.js",
        "popup/res/script/main.js"
      ],
      "matches": [ "<all_urls>" ],
      "match_about_blank": true,
      "all_frames": true
    }
  ],

  "content_security_policy": [
    "script-src 'unsafe-inline'"
  ]


}

0 个答案:

没有答案