Захват видео с нескольких веб-камер с помощью getUserMedia

Я хотел бы захватить видео с нескольких веб-камер, подключенных к моему компьютеру. Достаточно просто использовать один веб-камеру, но как я могу получить видеопотоки из нескольких источников? Можно ли выбрать, какую камеру использовать для одного потока?

     navigator.getUserMedia ({
         video: true 
     }, function (oMedia) {
         var video = document.getElementById ('tVideo1'); 
         video.src = window.URL.createObjectURL (oMedia); 
     }); 

Ответ 1

Вам нужно будет использовать API getSources, который не так хорошо поддерживается. Я боюсь. Я думаю, что Chrome имеет версию, скрытую за флагом конфигурации, но кроме этого ничего, что вы можете сделать, кроме ожидания.

Не тот ответ, который вы хотели услышать, я знаю, извините.

Ответ 2

Я был заинтригован вашим вопросом, поэтому начал изучать "несколько видеосерверов".

Спустя пару часов, когда я почти собирался сдаться, я встретил это групповое обсуждение google.

Я обратился к вашему вопросу, чтобы узнать, была ли ваша цель тем, что потоки из всех веб-камер должны появляться одновременно или если вы хотите предоставить пользователю возможность выбрать канал камеры. Похоже, вы хотели, чтобы пользователь выбирал фид. Если это более поздний случай, то в ссылке выше, Vikas (в своем сообщении от 8/15/2013) описал способ достижения этого. Вам нужно включить флаг источников перечисления WebRTC, а затем использовать MediaStreamTrack.getSources, чтобы получить все источники и передать sourceId в getUserMedia, например navigator.getUserMedia({ "video": {optional: [{sourceId: "--- YOUR ID HERE- -" }]}}, fun, errfun);. И, похоже, один из пользователей смог заставить его работать успешно.

Вот исходный код, который я видел. Эта информация будет специфичной для браузера Chrome или Firefox. Я просто подумал, что поделюсь этим, если вы еще не встретили этого, что-то, что может вам помочь. Я реализовал приложение, в котором несколько веб-камер питаются на одном экране, но это было проще, потому что это было настольное приложение.

Ответ 3

Вы можете одновременно захватить несколько видеопотоков, используя всплывающие окна. У меня только одна камера, поэтому я не могу проверить это решение. В Chrome я предполагаю, что пользователи могут щелкнуть значок камеры в строке адреса каждого дочернего окна, чтобы выбрать независимые источники. Firefox спрашивает, какую камеру использовать, когда он запрашивает разрешение на использование устройства, поэтому возможно даже использовать iframes вместо всплывающих окон с Firefox.