Совместное использование экрана и видео / аудио звонки с использованием WebRTC и Electron на Mac OS - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь создать электронное приложение, которое может обмениваться рабочим столом с системным звуком, используя webrtc, и если я устанавливаю ограничения:

const constraints = {
 audio: {
 mandatory: {
  chromeMediaSource: 'desktop'
 }
  },
video: {
mandatory: {
 chromeMediaSource: 'desktop'
}
 }
  }

Я получил эту проблему Mac OS audio :

ОШИБКА: adm_helpers.cc (73)] Не удалось запросить стереофоническую запись. и затем " NotFoundError: запрошенное устройство не найдено "

1 Ответ

0 голосов
/ 15 декабря 2018

Вам необходимо использовать desktopCapturer api электрона.

Пример -

// In the renderer process.
const {desktopCapturer} = require('electron')

desktopCapturer.getSources({types: ['window', 'screen']}, (error, sources) => {
  if (error) throw error
  for (let i = 0; i < sources.length; ++i) {
    if (sources[i].name === 'Electron') {
      navigator.mediaDevices.getUserMedia({
        audio: false,
        video: {
          mandatory: {
            chromeMediaSource: 'desktop',
            chromeMediaSourceId: sources[i].id,
            minWidth: 1280,
            maxWidth: 1280,
            minHeight: 720,
            maxHeight: 720
          }
        }
      })
      .then((stream) => handleStream(stream))
      .catch((e) => handleError(e))
      return
    }
  }
})

function handleStream (stream) {
  const video = document.querySelector('video')
  video.srcObject = stream
  video.onloadedmetadata = (e) => video.play()
}

function handleError (e) {
  console.log(e)
}

И использовать флаг audio выше для получения звука при совместном использовании экрана.

Подробнее здесь - https://electronjs.org/docs/api/desktop-capturer

...