Как подключить две веб камеры к компьютеру одновременно
Перейти к содержимому

Как подключить две веб камеры к компьютеру одновременно

  • автор:

Cтрим с несколькими камерами из подручных материалов

Всё началось с того, как при мне с помощью OBS Studio и какой-то программки для анимации обоев рабочего стола сделали из логотипа видеологотип (который еще и под текущую играющую музыку анимировался). В тот момент я понял что OBS Studio может НАМНОГО больше, чем просто стримить игры. После более близкого знакомства с OBS Studio, она претендует на место самой крутой программы, которую я когда-либо встречал.

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

Идея заключается в том, чтобы найти 2-3 беспроводных оператора, которые ходят по разным площадкам мероприятия, общаются с людьми, снимают движуху, и т.д. (ну, как у серьезных ребят, короче). А кто-то сидит, коммуницирует с ними по рации, и формирует из всего этого (и еще чего-нибудь, например, сдержимого всякого рода окошек/мониторов/проекторов) интересный видеоконтент, который не скучно смотреть.

Также можно объединять экраны нескольких компьютеров в один стрим, возможно это может быть полезно для игр. Хотя скорее всего конкретно для этой задачи есть и другие технологии.

Зачем?

Потому что это позволяет делать очень круто и сильно сместить технологический потолок качества стрима практически задаром.

При использовании кучи видеопотоков, крутота стрима будет определяться уже творческой и организационной составляющей (ну и качеством соединений).

  1. Ноут
    1.1. OBS Studio
    1.2. nginx с модулемRTMP
  2. Операторы со своими смартфонами
    2.1. Какая-нибудь приложуха из выдачи по запросу «stream rtmp», например Larix Broadcaster, или (если есть немного лишних денег) Ace Live Streaming или BitStream
  3. Стабильный вайфай, желательно 5GHz
  4. Стабильный аплинк

При наличии еще чего-нибудь, можно сделать хороший звук, хотя бы на стационарных камерах (которые могут быть любыми относительно качественными вэбками).

А при наличии еще одной ЭВМ на линуксе (говорят, даже Raspberry Pi ок для ≤3 потоков), можно немного разгрузить основной комп и его сеть для обработки и отправки стрима.

Общепризнанный протокол для видеостриминга — RTMP. Попытки юзать что-то еще ведут к диким лагам, это была моя главная ошибка.

Оказывается, принять RTMP-стрим и перенаправить его в OBS Studio — проще простого. Надо всего-то скомпилировать nginx с кастомным модулем и написать конфиг. Но об этом позже.

По-хорошему, надо делать как-то так:

То-есть не давать мобилкам Интернет, чтобы они не тратили ресурсы ни на что кроме стрима.
Но ежели хороший вайфай с Интернетом уже есть (а лишней точки доступа на 5GHz нет), то можно не брезговать и юзать существующие соединения. Однако, отправлять конечный стрим всё-таки желательно с другого соединения, или, в крайнем случае, с того же, но через провод.

Если есть необходимость принимать стримы с камер и отправлять конечный стрим через один и тот же вайфай, тщательно протестируйте стабильность (и учтите, что она сильно снизится если на этот вайфай полезет толпа девайсов).

Как поднять RTMP-сервер?

Лучше делать это на линуксе, чтобы не испытывать проблем со всякими MINGW/MSYS. И на отдельном железе (не обязательно мощном). Либо в докере, тогда можно скипнуть этот раздел, ибо докерфайл уже есть. Через WSL тоже можно, но надо будет вручную пробросить TCP-порт 1935 в файрволе.

Вот отличный мэнуал How to set up your own private RTMP server using nginx, и в доке тоже годно написано. Краткий пересказ в вольном стиле:

Качаем последнюю Mainline версию исходников отсюда:

Качаем последнюю версию RTMP-модуля:

Если свалится не дойдя до Configuration summary , исправляем проблемы.
Эта команда настроит Ваш стримерский nginx жить в /usr/local/nginx/ и запускаться по команде sudo /usr/local/nginx/sbin/nginx . Таким образом nginx из репозитория ничего не почувствует. Это можно поменять, изучив ./configure —help .

В принципе через make install в данном случае безопасно, но всё-таки не надо так.

В конец добавляем конфиг RTMP-сервера:

При желании, можно настроить HTTP-сервер на отображение статистики.
В доке описано что еще можно настроить, там действительно очень много всего. Если Вы знаете как сделать лучше, буду рад добавить раздел про конфигурацию сервера с материалом из комментариев.

Что делать с RTMP-сервером?

Отправить на него стрим с мобильной приложухи по адресу rtmp://[ваш локальный IP]:1935/live/habr где live — это имя RTMP-приложения в конфиге nginx, а habr — это Stream Key, который надо менять для разных камер.

Если Вы настроили показ статистики (и не забыли поменять путь к файлу stat.xsl ), проверить что стрим пришёл (по адресу http://localhost:8080/stat).

Подключить ко всем стримам OBS Studio.

Очевидно, что сервер может быть не только локальным, но и доступным из внешки, что позволит делать всё то же самое, но не через вайфай, а через Интернет. Можно сделать свой аналог инстаграмовских групповых стримов, ну и вообще, безграничные возможности ))

Есть еще пара вещей, которые я познал на ошибках и хотел бы поделиться:

  1. Можно и нужно менять целевой битрэйт конечного стрима по ходу трансляции, и подстраиваться под возможности соединения. Restream, например, рисует крутые графики, по которым понятно на сколько надо понижать. Есть Pull Request на автоподбор битрэйта, но он заглох ((
  2. Существует такой параметр Keyframe Interval, и он должен быть больше секунды (это надо вручную задавать в Advanced-версии настроек Output). Restream об этом рассказывает только после окончания стрима, UX на высоте! ))
  3. Есть еще один крайне полезный Pull Request, в котором я поучаствовал, и за который активно топлю, но он тоже выглядит заглохшим, хотя мэйнтейнер про него недавно вспомнил и переосмыслил. Лайкните, плиз, если Вам тоже кажется, что отсутствие кнопки Monitor на аудио-каналах — это ужасно.

Вот теперь точно всё, спасибо за внимание ^_^

Для тех кто попытается всё-таки сбилдить nginx для вездесущей венды, вот грабли по которым я прошелся, тот еще квест оказался, я не зря этого процесса так опасался:

Можно ли подключить к одному компьютеру две веб-камеры?

Можно, но работать будет только одна.
Тебе придётся решить пару броблем.
1. Это, что программы обеих камер могут конфликтовать и тебе придётся отказаться от графических программ одной или обеих вебок.
2. Если ты будет сидеть через сайт там где нельзя выбирать какая камера будет задействована, то будет работать только одна.
3. Иногда одна камера будет отрубать другу.
Для решения проблем могут потребоваться дополнительные программы такие как WebcamMax или ManiCam (эти программы помогут выбрать одну камеру или другую, а так же с этими программами ты сможешь добавить спецэффекты)

Ну а в общем никаких проблем не будет.
Одна или другая камера будут рабоать всегда, но не в одном окне, но и для этого есть программы

2 WEB Kамеры на одном компьютере.

LHf1

Привет всем!
Ситуация такая: к компьютеру подключена WEB Kамера Logitech HD Webcam C525. Хочу купить ещё одну камеру Logitech HD Webcam C615. Обе камеры будут воткнуты в разные USB-порта, но к одному компьютеру. Одна будет, как обычно, постоянно стоять на мониторе, а вторую я хочу поставить на окошко, чтобы, когда надо, можно было через неё на улицу глянуть. А то надоело мне одну WEB Kамеру постоянно переставлять то на монитор, то на окно.
Теперь вопрос: будут ли работать 2 WEB Kамеры Logitech на одном компьютере?
Если точнее сказать, то я не стремлюсь к тому, чтобы они обе одновременно показывали картинку, мне это не надо. Моя задача — включать их поочерёдно. Допустим, надо понаблюдать в окно, раз, переключился на соответствующую камеру, а вторая, в это время, пусть не показывает. И наоборот.
Между ними можно будет переключаться в программе Logitech Webcam Software или нужны специальные программы для этого?

P.S. IP-камеры не предлагать. Знаю, что с ними проблем бы не было. Задача — организовать всё с помощью двух WEB Kамер.

#2

Aikon1964

Теперь вопрос: будут ли работать 2 WEB Kамеры Logitech на одном компьютере?

#3

_0_

Привет всем!
Ситуация такая: к компьютеру подключена WEB Kамера Logitech HD Webcam C525. Хочу купить ещё одну камеру Logitech HD Webcam C615. Обе камеры будут воткнуты в разные USB-порта, но к одному компьютеру. Одна будет, как обычно, постоянно стоять на мониторе, а вторую я хочу поставить на окошко, чтобы, когда надо, можно было через неё на улицу глянуть. А то надоело мне одну WEB Kамеру постоянно переставлять то на монитор, то на окно.
Теперь вопрос: будут ли работать 2 WEB Kамеры Logitech на одном компьютере?
Если точнее сказать, то я не стремлюсь к тому, чтобы они обе одновременно показывали картинку, мне это не надо. Моя задача — включать их поочерёдно. Допустим, надо понаблюдать в окно, раз, переключился на соответствующую камеру, а вторая, в это время, пусть не показывает. И наоборот.
Между ними можно будет переключаться в программе Logitech Webcam Software или нужны специальные программы для этого?

P.S. IP-камеры не предлагать. Знаю, что с ними проблем бы не было. Задача — организовать всё с помощью двух WEB Kамер.

#4

LHf1

Не, там человеку надо чтобы они все одновременно показывали, а для меня это не главное. Специально выделил жирным шрифтом. И причём тут программа VirtualDub вообще не понял

А как проверить на разных они или нет? Материнка вот такая: http://www.gigabyte. 55a-ud4_20.html

#5

_0_

Чипсет:
Up to 12 USB 2.0/1.1 ports (8 on the back panel, 4 via the USB brackets connected to the internal USB headers)

Контроллер NEC:
2 порта USB 3.0/2.0 на задней панели

#6

LHf1

Сам же и отвечу

Да, можно! Купил я Logitech C615. В родном приложении Logitech Webcam Software, сразу появился пункт «Смена ВЕБ-KАМЕРЫ» и всё прекрасно переключается, хотя техподдержка Logitech мне весь мозг вынесла, уверяя в обратном.

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *