我正在尝试使用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
时,它会记录麦克风,即使我得到了源窗口选择对话框。
我做错了什么?
答案 0 :(得分:1)
在尝试了一下代码之后,在我看来,捕获系统音频的唯一方法就是通过视频参数。我无法使用audio参数捕获非麦克风音频。 screen recorder应用正在做同样的事情 - 通过视频录制系统音频。