LinuxForum.Fans
Тема

Две USB-камеры в linux (одновременно)

Автор: vladikas 17 сообщений 12519 просмотров
26.10.2010 21:49 · отредактировано #92271

По одной работают, вместе нет. Разные проги и одинаковые, разницы нет.
При запущеной второй камере запускаю первую ругается так:

Показать

user@ubuntu:~$ luvcview -d /dev/video0
luvcview 0.2.6

SDL information:
Video driver: x11
A window manager is available
Device information:
Device path: /dev/video0
Stream settings:
Frame format: YUYV (MJPG is not supported by device)
Frame size: 640x480
Frame rate: 30 fps
Unable to start capture: No space left on device
Error grabbing
Cleanup done. Exiting ...

user@ubuntu:~$

Так нормально, когда в одиночку

Показать

user@ubuntu:~$ luvcview -d /dev/video1
luvcview 0.2.6

SDL information:
Video driver: x11
A window manager is available
Device information:
Device path: /dev/video1
Stream settings:
Frame format: YUYV (MJPG is not supported by device)
Frame size: 640x480
Frame rate: 30 fps

Quit signal received.
Cleanup done. Exiting ...
user@ubuntu:~$

Так другая прога ругается при запущенной другой камере

Показать
user@ubuntu:~$ motion -n -c ~/motion1.conf
[0] Processing thread 0 - config file /home/user/motion1.conf
[0] Motion 3.2.11 Started
[0] ffmpeg LIBAVCODEC_BUILD 3412993 LIBAVFORMAT_BUILD 3415808
[0] Thread 1 is from /home/user/motion1.conf
[1] Thread 1 started
[0] motion-httpd/3.2.11 running, accepting connections
[1] cap.driver: "uvcvideo"
[1] cap.card: "USB2.0_Camera"
[1] cap.bus_info: "usb-0000:00:1d.7-3"
[1] cap.capabilities=0x04000001
[1] - VIDEO_CAPTURE
[1] - STREAMING
[1] Supported palettes:
[1] 0: YUYV (YUV 4:2:2 (YUYV))
[0] motion-httpd: waiting for data on port TCP 8080
[1] index_format 6 Test palette YUYV (640x480)
[1] Using palette YUYV (640x480) bytesperlines 1280 sizeimage 614400 colorspace 00000008
[1] found control 0x00980900, "Brightness", range 0,255
[1] "Brightness", default 130, current 130
[1] found control 0x00980901, "Contrast", range 0,100
[1] "Contrast", default 45, current 45
[1] found control 0x00980902, "Saturation", range 0,200
[1] "Saturation", default 95, current 95
[1] found control 0x00980903, "Hue", range -180,180
[1] "Hue", default 0, current 0
[1] found control 0x00980910, "Gamma", range 40,100
[1] "Gamma", default 52, current 52
[1] mmap information:
[1] frames=4
[1] 0 length=614400
[1] 1 length=614400
[1] 2 length=614400
[1] 3 length=614400
[1] Error starting stream VIDIOC_STREAMON:
[1] ioctl(VIDIOCGMBUF) - Error device does not support memory map
[1] V4L capturing using read is deprecated!
[1] Motion only supports mmap.
[1] Could not fetch initial image from camera
[1] Motion continues using width and height from config file(s)
[1] Resizing pre_capture buffer to 1 items
[1] Retrying until successful connection with camera
[1] cap.driver: "uvcvideo"
[1] cap.card: "USB2.0_Camera"
[1] cap.bus_info: "usb-0000:00:1d.7-3"
[1] cap.capabilities=0x04000001
[1] - VIDEO_CAPTURE
[1] - STREAMING
[1] Error selecting input 0 VIDIOC_S_INPUT:
[1] ioctl(VIDIOCGMBUF) - Error device does not support memory map
[1] V4L capturing using read is deprecated!
[1] Motion only supports mmap.
[1] Retrying until successful connection with camera
[1] cap.driver: "uvcvideo"
[1] cap.card: "USB2.0_Camera"
[1] cap.bus_info: "usb-0000:00:1d.7-3"
[1] cap.capabilities=0x04000001
[1] - VIDEO_CAPTURE
[1] - STREAMING
[1] Error selecting input 0 VIDIOC_S_INPUT:
[1] ioctl(VIDIOCGMBUF) - Error device does not support memory map
[1] V4L capturing using read is deprecated!
[1] Motion only supports mmap.

^C[0] httpd - Finishing
[0] httpd Closing
[0] httpd thread exit
[1] Thread exiting
[0] Motion terminating
user@ubuntu:~$

Так нормально, когда в одиночку

Показать
user@ubuntu:~$ motion -n -c ~/motion1.conf
[0] Processing thread 0 - config file /home/user/motion1.conf
[0] Motion 3.2.11 Started
[0] ffmpeg LIBAVCODEC_BUILD 3412993 LIBAVFORMAT_BUILD 3415808
[0] Thread 1 is from /home/user/motion1.conf
[1] Thread 1 started
[0] motion-httpd/3.2.11 running, accepting connections
[1] cap.driver: "uvcvideo"
[1] cap.card: "USB2.0_Camera"
[1] cap.bus_info: "usb-0000:00:1d.7-3"
[1] cap.capabilities=0x04000001
[1] - VIDEO_CAPTURE
[1] - STREAMING
[1] Supported palettes:
[1] 0: YUYV (YUV 4:2:2 (YUYV))
[0] motion-httpd: waiting for data on port TCP 8080
[1] index_format 6 Test palette YUYV (640x480)
[1] Using palette YUYV (640x480) bytesperlines 1280 sizeimage 614400 colorspace 00000008
[1] found control 0x00980900, "Brightness", range 0,255
[1] "Brightness", default 130, current 130
[1] found control 0x00980901, "Contrast", range 0,100
[1] "Contrast", default 45, current 45
[1] found control 0x00980902, "Saturation", range 0,200
[1] "Saturation", default 95, current 95
[1] found control 0x00980903, "Hue", range -180,180
[1] "Hue", default 0, current 0
[1] found control 0x00980910, "Gamma", range 40,100
[1] "Gamma", default 52, current 52
[1] mmap information:
[1] frames=4
[1] 0 length=614400
[1] 1 length=614400
[1] 2 length=614400
[1] 3 length=614400
[1] Using V4L2
[1] Resizing pre_capture buffer to 1 items
[1] File of type 8 saved to: /home/user/motion1/20-11-07.avi
[1] File of type 1 saved to: /home/user/motion1/20-11-07-00.jpg
[1] File of type 1 saved to: /home/user/motion1/20-11-08-00.jpg
[1] File of type 1 saved to: /home/user/motion1/20-11-09-00.jpg
[1] File of type 1 saved to: /home/user/motion1/20-11-10-00.jpg
^C[1] File of type 1 saved to: /home/user/motion1/20-11-11-00.jpg
[0] httpd - Finishing
[0] httpd Closing
[0] httpd thread exit
[1] Thread exiting
[1] Calling vid_close() from motion_cleanup
[1] Closing video device /dev/video1
[0] Motion terminating
user@ubuntu:~$

Как запустить две одновременно?

26.10.2010 22:30 #92282

Что пишется в логах при подключении второй камеры?

26.10.2010 22:40 #92288

Отключение и включение первой и второй камеры:
[260850.496271] usb 2-1: USB disconnect, address 2
[260856.710027] usb 2-1: new high speed USB device using ehci_hcd and address 8
[260856.951326] usb 2-1: configuration #1 chosen from 1 choice
[260856.957978] uvcvideo: Found UVC 1.00 device USB2.0_Camera (093a:2700)
[260856.965316] input: USB2.0_Camera as /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/input/input7
[260920.814740] usb 2-3: USB disconnect, address 7
[260925.930025] usb 2-3: new high speed USB device using ehci_hcd and address 9
[260926.171062] usb 2-3: configuration #1 chosen from 1 choice
[260926.180606] uvcvideo: Found UVC 1.00 device USB2.0_Camera (093a:2700)
[260926.188838] input: USB2.0_Camera as /devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.0/input/input8

29.10.2010 10:16 #93137

Вопрос решён. Разные номера портов нужны были.

[260856.965316] input: USB2.0_Camera as /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/input/input7
[260920.814740] usb 2-3: USB disconnect, address 7
[260925.930025] usb 2-3: new high speed USB device using ehci_hcd and address 9
[260926.171062] usb 2-3: configuration #1 chosen from 1 choice
[260926.180606] uvcvideo: Found UVC 1.00 device USB2.0_Camera (093a:2700)
[260926.188838] input: USB2.0_Camera as /devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.0/input/input8

Вот тут одинаковый. Так и не работало. Что интересно определённый разъём не привязан к номеру шины. Может только в линкуксе так. Один и тот же разъём то пятая шина, то вторая.

07.11.2010 11:17 #96785

Это очень странно.
У меня другой вопрос. Установил Генту - после перезагрузки нет звука. А если вытащить Web-камеру и перезагрузиться - звук есть. В openSuSE и со вставленной камерой компьютер включается со звуком.
Проблема номер два. Две звуковые карты - встроенная и в веб-камере, встроенная и в PCI, встроенная и та что в клавиатуре (там телефонная трубка). ОС как-то сама определяет, через какую из них звук выводить. Видел в Убунте настройку Звук, указываешь там какую хочешь карту и музыка выводится из неё. А Wine, нативные игры и прочие не-гном приложения по-прежнему через то, что выбрала система.
Как из графического интерфейса указать системе, какая звуковая карта нулевая?

30.11.2010 20:27 #103431

Ничего странного, 2 usb-камеры не могут работать на одном usb контроллёре, т.к. драйвер uvc одной камеры кушает всю ширину usb канала, даже если он её и не использует на всю..
Я уже давно пытаюсь найти решение этой проблемы, но на разных форумах только и слышно "попробуйте хакнуть драйвер", что бы не кушал весь usb канал.

21.08.2011 14:37 #186065

в порядке бреда - а если воткнуть камеры не непосредственно в комп, а в usb-концентратор?

24.08.2011 23:40 · отредактировано #186781

спасибочки

08.04.2013 16:01 #314053
vladikas написал:
Вопрос решён. Разные номера портов нужны были.

[260856.965316] input: USB2.0_Camera as /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/input/input7
[260920.814740] usb 2-3: USB disconnect, address 7
[260925.930025] usb 2-3: new high speed USB device using ehci_hcd and address 9
[260926.171062] usb 2-3: configuration #1 chosen from 1 choice
[260926.180606] uvcvideo: Found UVC 1.00 device USB2.0_Camera (093a:2700)
[260926.188838] input: USB2.0_Camera as /devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.0/input/input8

Вот тут одинаковый. Так и не работало. Что интересно определённый разъём не привязан к номеру шины. Может только в линкуксе так. Один и тот же разъём то пятая шина, то вторая.

vladikas, а каким образом можно определить камерам разные порты?

08.04.2013 16:34 #314061

Сейчас всё само должно определятья и камерам просто присваиваются разные девайсы, например /dev/video0 и /dev/video1, по которым они и будут доступны.

08.04.2013 19:55 #314086
Vascom написал:
Сейчас всё само должно определятья и камерам просто присваиваются разные девайсы, например /dev/video0 и /dev/video1, по которым они и будут доступны.

Я полностью согласен - должно само определятся, но на практике - не определяется *WALL*

Камерам действительно присваиваются разные дивайсы /dev/video0 и /dev/video1, но работать вместе они отказываются

Unable to start capture: No space left on device
08.04.2013 20:05 #314090

Так может место на диске закончилось? Или ещё какой-то ресурс занят?

19.01.2017 20:13 #419149

Апну тему.

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

Имеется Armbian - читаем debian на cubietruck . Совместимость с относительная, что-то работает, что-то нет.
Есть пара вёб камер Логитеч с210 , система с ними замечательно сдруживается и видет их как video0 и video1 .

Хочу - вещать в локалку. Использовал VLC - почти справляется с задачей. Даже при отправки UDP и без компрессии, по витухе, всё равно задержка приличная :( что печалит - это огорчительно, хотелось бы уменьшить по возможности.
Вторая и более фундаментальная проблема - не могу стримить сразу с двух камер. Т.е. при запуске второго окна с плеером, настройки стрима с другой камеры, на другой порт (хотя IP адрес причёмника один) - сопротивляется.

Может кто сталкивался с вопросами и может помочь? Под виндами всё достаточно тривиально и решаемо, а тут прямо заморока и не знаю в какую сторону лезть.

19.01.2017 20:44 #419150

Phoenix, Zoneminder не?
Можно будет смотреть прямо в браузере, можно через vlc.
Ну и по личным наблюдениям задержки минимальные, т.е. такие что на глаз не заметно.....

20.01.2017 17:10 #419181

diablopc, сейчас сяду пробовать, спасибо за совет.

Просто тут как бы всё из коробки, но в коробке нет бубна, а без бубна не собирается.

Я перебрал ряд вариаций запросов в гугле, но толку мало откровенно было. Ну и опять вопрос несколько не тривиальный ввиду того что устройства то у меня два, и вещать надо паре и с разу. Да и дебиан не столь дружелюбен как убунта, на локализацию вовсе забил. Предпоследние попытки добиться от системы работы с двумя мониторами (на одноплатнике VGA и HDMI и андрюшка их поддерживает) кончились умершвлением системы :))).

20.01.2017 17:58 #419182

Phoenix, есть еще MotionEye OS, она для Raspberry но можно и собрать для любой системы.
Правда я не пробовал.

20.01.2017 22:44 · отредактировано #419192

MotionEye OS - не знаю. Вот тут начинаются на самом деле ньюансы. У малинки есть своя штатная камера, которая цепляется, и ХЗ как определяется - к сожалению нет малинки что бы затестить и посмотреть. На малине реализован стрим видео, но не знаю на счёт пары, у товарища спрашивал - он "gstream и всё". VLC его же библиотеку использует и была засада именно с тем что не мог с двух девайсов слать.

Поставил я зверя Zoneminder. По одному из руководств, завёлся он, а дальше пошли ньюансы... камера - как бы есть, но не вещает (вёбки). Красным горит, хотя в девайсах всё определяется и т.д.

Достаём бубен с методами научного тыка... рысканье по форумам дало что может бы быть прав эксплуатации данных девайсов или хер знает чего ещё... натыкаюсь на

sudo chmod 666 /dev/video0
sudo chmod 4755 /usr/bin/zmfix

Только нет у меня директории zmfix - при установках и т.д. не создавалась - следовательно что бы оно ни было но оно не работает :)))

создаём, пишем.

root@cubietruck:~# sudo chmod 666 /dev/video0
root@cubietruck:~# sudo chmod 4755 /usr/bin/zmfix
root@cubietruck:~# sudo chmod 666 /dev/video1
root@cubietruck:~# sudo chmod 4755 /usr/bin/zmfix

ребут.

и чудо, завелось. Камеры позеленели и видео пошло.

Работает только с "видео для линукс версия 2"
на настройки формата - камеры абсолютно кладут, завелась правда в конфиге с NTSC M потом тыкал на любой - работает.

Настройка цветопередачи важна, но между 24 и 32 битами разницы не вижу, ну в сером - так в сером.

Разрешением можно играться, но поддерживает только стандартные, по дефолту 320 * 240, можно 640 * 480 тоже работает. Есть родное разрешение камеры, которое выдаёт автоопределение - с ним работать не хочет.

Я использую режим "наблюдение".

Если цеплять вёбки через Хаб - велика вероятность не хватки питания по видимому - так как с пассивным хабом они отказывались работать. Воткнул в активный - полёт нормальный!!!

С определением есть некоторая заморока, первоначально определялись как video0 и 1 соответственно, после замены порта "на горячую" переопределила как "2" - нулевой индекс назад не вернула. После переразгрузки так и осталась "2" . В общем как бы работает.

От чего зависит выдаваемое количество кадров - ХЗ даже, по началу "много" при хорошем питании говорит что аж и 30, потом падаю до 15, и 9, иногда до 7. Но тут полагаю и от камеры многое зависит. Использую Логитеч С210 , обе близняшки. Кстати для второй камеры команду не вводил, ХЗ но заработала и так %).

Теперь осталось выяснить как мне их ловить, и на перспективу какие взять что бы кадров и разрешение побольше.

П.С. Может быть проблема с отображением видео, если включена аутентификация. Выставляем галку - логинимся, камеры зелёные, всё норм, но тестово посмотреть не можем - каринка залочена.

Войдите или зарегистрируйтесь, чтобы ответить.