2016-12-13 2 views
2

Я пытаюсь приобрести различные MediaStreams, указав в каждом случае разные deviceId.Как получить несколько потоков с различными ограничениями устройств в Firefox?

Например: у меня есть 3 микрофона (audioinputs) и вы хотите приобрести аудиопоток для каждого из них.

  1. streamC1: с deviceId 4hYbpq3YGKqNN6RbbLz5HrLfolsmjFDMl8sY
  2. streamC2: с deviceId MZ0gdxcs1Q0NW0sobM8ri3kfDhmOs1K74e2p
  3. streamC3: с deviceId iUWqFDfruPGcT6nl9gUxeN6dCM8VfFH5ZmR8

    const c1 = { audio: { deviceId: { exact: audioInputs[0].deviceId } } }; 
    const c2 = { audio: { deviceId: { exact: audioInputs[1].deviceId } } }; 
    const c3 = { audio: { deviceId: { exact: audioInputs[2].deviceId } } }; 
    
    getMedia(c1) 
    .then(() => getMedia(c2)) 
    .then(() => getMedia(c3)); 
    

Here is a complete JSFiddle.

Это прекрасно работает в Chrome (версия 55.0.2883.87), и я получаю 3 разных потока (C1, C2, C3) со всеми звуковыми дорожками, имеющими ожидаемые метки.

chrome output

Но терпит неудачу со вторым и третьим вызовом getUserMedia (С2, С3) в Firefox (50.0.2) со следующей ошибкой:

firefox output

According to the documentation для NotReadableErrors:

Although the user granted permission to use the matching devices, a hardware error occurred at the operating system, browser, or Web page level which prevented access to the device.

(Однако я могу получить несколько потоков с теми же ограничениями, не сталкиваясь с этой проблемой.)

Является ли Firefox таким же ожидаемым здесь? Поскольку в документах упоминается «аппаратная ошибка»? Есть ли другой способ получить несколько потоков (с различными ограничениями на устройства)? Или мне нужно остановить потоки, освободить устройства и затем приобрести новый поток?

Спасибо за ваше время.

ответ

5

В настоящее время (Ночь в настоящее время 53) Firefox не поддерживает несколько активных источников аудиовхода.

Это то, о чем мы думаем, но для этого требуется несколько серьезных изменений в нашей сантехнике. Все это связано с дрейфом - входы (и выходы), сбрасываемые с разных часов.

Мы планируем сделать промежуточный шаг к этому, интерпретируя запрос на новое устройство как намерение переключать устройства. Это позволяет нам сохранить первое открытое, пока отображается приглашение для второго, а затем легко переключаться. Это относительно невысокие фрукты для выпуска в bug 1299324.

+0

Привет большое спасибо за быстрый ответ. Таким образом, несколько активных ** источников видеовхода ** должны работать без проблем? (Я сделал быстрый тест и, похоже, работает). И на данный момент мне придется остановить дорожки, чтобы освободить связанное устройство? – wpp

+2

Правильно и правильно. И будьте осторожны, что устройства обычно не могут быть приобретены, если они уже приобретены другим процессом. – pehrsons