Главная Мой профиль Регистрация Выход Вход
Приветствую Вас Гость | RSS
Пятница
10.04.2026
05:25
Мой сайт
Меню сайта
Мини-чат
Наш опрос
Оцените мой сайт
Всего ответов: 0
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » 2014 » Март » 7 » [HOWTO]Веб камера в нескольких приложениях одноврем
16:40
 

[HOWTO]Веб камера в нескольких приложениях одноврем

Задался целью: "научить" камеру работать сразу в нескольких приложениях. По дефолту при подключении камеры появляется девайс /dev/video*, и если какое-то приложение его юзает (например Skype), то для других это устройство выдает черный экран. Как быть если например охота вести трансляцию и при этом ее записывать? Оказалось не все так сложно как казалось изначально))). Для решения данной задачи нам потребуется модуль v4l2loopback, который создаст виртуальное устройство, и в который будет "лупить" видео поток с камеры. Начнем! ;)

Для начала установим сам модуль

sudo apt-get install v4l2loopback-dkms

Далее можно его подгрузить

modprobe v4l2loopback

После чего должно появиться новое устройство, у меня оно называется /dev/video1, так как /dev/video0 - это камера (у вас нумерация может быть другой, учитываем это)
Что бы не набирать эту команду каждый раз после загрузки, сделаем так, что бы модуль грузился автоматом

sudo nano /etc/modules

добавляем строку

v4l2loopback

После чего ставим пакет gst-launch-0.10

sudo apt-get install gst-launch-0.10

Вот теперь мы подходим к самому интересному. Можно попробовать пере направить поток с камеры на наш виртуальный девайс

gst-launch v4l2src device=/dev/video0 ! videorate ! video/x-raw-yuv,width=640,height=480 ! v4l2sink device=/dev/video1

Где /dev/video0 - камера, /dev/video1 - виртуальная камера. width=640,height=480 - ширина и высота потока с камеры (тут хотел бы пояснить, как я выяснил если в программе принудительно выставить разрешение камеры то это игнорируется, и поток идет с максимальным разрешением камеры, что неудобно для работы с такими программами как motion. Если же ограничения не нужны, то опцию "video/x-raw-yuv,width=640,height=480" можно просто напросто вырезать). Если терминал не выдал ни каких ошибок, то поток пошел на виртуальную камеру, можем проверить это запустив какие ни будь программы использующие камеры одновременно и выбрать /dev/video1.
Радуемся. НО! Нам конечно бы хотелось получить это при загрузке, не вводя ни каких команд. Для этого редактируем файл

sudo nano /etc/rc.local

и перед строкой "exit 0" вставляем

gst-launch v4l2src device=/dev/video1 ! videorate ! video/x-raw-yuv,width=640,height=480 ! v4l2sink device=/dev/video0

Обратите внимание, что теперь устройства поменялись местами. /dev/video1 - камера, а /dev/video0 - виртуальная камера. так как модуль будет грузится при запуске системы, то виртуальное устройство будет всегда первым нежели остальные устройства. После чего перезагружаемся и радуемся работе камеры во всех приложениях одновременно)))

ЗЫ если есть ошибки в коде или в командах прошу поправить, писал на скорую руку)

Просмотров: 415 | Добавил: thansiguir | Рейтинг: 0.0/0
Всего комментариев: 0
Поиск
Календарь
«  Март 2014  »
Пн Вт Ср Чт Пт Сб Вс
     12
3456789
10111213141516
17181920212223
24252627282930
31
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  •  Copyright MyCorp © 2026
    Конструктор сайтовuCoz