2016-11-18 1 views
1

Я пытаюсь использовать API chrome.desktopCapture.chooseDesktopMedia, чтобы захватить звук из окна расширения.Расширение Chrome: невозможно сделать chrome.desktopCapture.chooseDesktopMedia окно захвата окна

Я отправляю запрос на захват со страницы popup.js.

Manifest:

{ 
"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, я получаю:

Не удалось выполнить 'getU serMedia 'on' MediaDevices ': требуется хотя бы один из аудио и видео (...).

Следующий код не отображается в API, но я читал об этом здесь и попробовал, предыдущая ошибка относится к нему, а также:

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

Когда я использовать audio:true , он записывает микрофон, хотя я получаю диалог выбора исходного окна.

Что я делаю неправильно?

+0

Это не похоже на то, что звук окна записи поддерживается только для вкладок и экранов. Вам также необходимо передать «звук» в массив типов захвата. –

+0

@ DanielHerr Спасибо, будет ли параметр «screen» записывать выход системы после добавления параметра «audio»? Кроме того, являются ли обязательные параметры правильными? – Nim

+0

Проверьте источник этого примера: https://chrome.google.com/webstore/detail/gdamcnkmddbfhaadidkhahllkabienpk –

ответ

1

После нескольких экспериментов с кодом мне кажется, что единственный способ захватить системный звук - через параметр видео. Я не смог захватить звук без микрофона, используя параметр звука. Приложение screen recorder делает то же самое - системный звук записывается через видео.

+0

Похоже, что теперь есть проблема только для захвата аудио: https://bugs.chromium.org/p/chromium/issues/detail?id=769388 – kzahel