Chrome扩展程序:无法制作chrome.desktopCapture.chooseDesktopMedia捕获窗口音频

时间:2016-11-18 22:16:10

标签: google-chrome-extension web-audio

我正在尝试使用chrome.desktopCapture.chooseDesktopMedia API来从扩展程序窗口中捕获音频。

我正在从popup.js页面发送捕获请求。

清单:

{
"background": {
    "scripts": [ "background.js" ]
},
"browser_action": {
    "default_icon": "style/icons/icon16.png",
    "default_title": "__MSG_name__"
},
"default_locale": "en",
"description": "__MSG_description__",
"icons": {
    "128": "style/icons/icon128.png"
},
"manifest_version": 2,
"name": "__MSG_extName__",
"permissions": ["activeTab","desktopCapture"],
"offline_enabled": true,
"short_name": "__MSG_short__",
"version": "1.0.9"

}

功能:

chrome.desktopCapture.chooseDesktopMedia(["window"], function (streamId) {
        var audioStream = navigator.mediaDevices.getUserMedia({
            audio: true,
            chromeMediaSource: 'desktop',
            chromeMediaSourceId: streamId
        });
        audioStream.then(function (mediaStream) {...}

我尝试使用不同的参数,但每当我省略:audio:true时,我得到:

  

无法在'MediaDevices'上执行'getUserMedia':至少有一个   必须要求音频和视频(...)。

以下代码未出现在API中,但我在此处阅读并尝试过,之前的错误也适用于此:

audio: {
  mandatory: {
       chromeMediaSource: 'desktop',
       chromeMediaSourceId: streamId
       }
     }

当我使用audio:true时,它会记录麦克风,即使我得到了源窗口选择对话框。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

在尝试了一下代码之后,在我看来,捕获系统音频的唯一方法就是通过视频参数。我无法使用audio参数捕获非麦克风音频。 screen recorder应用正在做同样的事情 - 通过视频录制系统音频。