Перейти к содержанию
    

Проблема с запуском нескольких камер на хабе

Добрый день. Участвую в студенческой разработке и нам необходимо прикрутить 4 камеры и обработать с них видео поток данных. Пока все тестируем на Ubuntu и имеем следующий стенд:
1. Небольшие четыре видеокамеры 640x480, 320x240
2. USB-hub 3.0 на 4 порта

Сейчас написали, что-то похожее на ЭТО:

С одной камерой все отлично работает, но если сделать их 2 то уже пойдёт ошибка: No space left on device

При этом, если подключить 4 камеры в порты самого системного блока компьютера, то картинка отображается очень даже хорошо. Для этого, для
каждой камеры выполняется:

ioctl(this->fd, VIDIOC_STREAMON, &type)

Проблема сохраняется, если подключать камеры через usb-hub. Однако, мы решили проблему и делаем следующее:

//
    camera->dBuf();
    camera->streamOff();
    camera_next->streamOn();
    camera_next->qBuf();
//

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

Такой костыль позволяет считывать с 4 камер подключенных к хабу, но фпс падает до 2-3 кадров в секунду, хотя до этого было на уровне 15 кадров.

Используем v4l и SDL для отображения кадров. Собираемся потом портировать на девборд тинкер.

Вопрос, как правильно работать с множеством подключенных камер?
 

v4l2-ctl -d /dev/video2 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
	Type: Video Capture

	[0]: 'YUYV' (YUYV 4:2:2)
		Size: Discrete 640x480
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 320x240
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.200s (5.000 fps)

 

 

Изменено пользователем Ivan21

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, aaarrr сказал:

Так полосы, наверное, не хватает. Какой поток идет с одной камеры?

А как узнать какой поток идёт? Камера выдает видео в разрешении 640х480. Формат YUYV.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, Ivan21 сказал:

Камера выдает видео в разрешении 640х480. Формат YUYV.

Сколько бит выделено на YUYV? Всё это перемножить на частоту кадра, а наверное компрессия там какая-нибудь.

С другой стороны надо открыть даташит хаба и посмотреть сколько он может транслировать. Если нет, тогда вскрыть хаб и посмотреть что за чип там стоит и найти его даташит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 часов назад, Ivan21 сказал:

Добрый день. Участвую в студенческой разработке и нам необходимо прикрутить 4 камеры и обработать с них видео поток данных. Пока все тестируем на Ubuntu и имеем следующий стенд:
1. Небольшие четыре видеокамеры 640x480, 320x240
2. USB-hub 3.0 на 4 порта

Сейчас написали, что-то похожее на ЭТО:

С одной камерой все отлично работает, но если сделать их 2 то уже пойдёт ошибка: No space left on device

При этом, если подключить 4 камеры в порты самого системного блока компьютера, то картинка отображается очень даже хорошо.

Через USB 3 хаб ваши USB HS камеры в количестве более 1шт. работать не будут.

На SO пишут:

Цитата

In USB 3.x specifications, electrically the USB 2.0 interface is completely independent from SuperSpeed path, it runs in parallel, on dedicated old-style D+/D- wires. Unlike USB 2.0, USB 3.x doesn't introduce "TT" (Transaction Translator), the USB 3.x super-speed transactions cannot be "translated" into HS USB 2.0 transactions.

Если на пальцах то USB HS не конвертируется в USB SS, для совместимости в USB 3 добавили старый дремучий USB 2 и в хабе тоже дублируется, т.е USB3 хаб содержит 2 раздельных хаба для USB SS и USB HS/FS/LS. На интерфейсе HS не хватит полосы более чем на 1 камеру. Трансляторов SS-HS не существует.

Когда вы втыкаете камеры в порты системника видимо оно идет на разные контроллеры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 часов назад, _3m сказал:

Через USB 3 хаб ваши USB HS камеры в количестве более 1шт. работать не будут.

На SO пишут:

Если на пальцах то USB HS не конвертируется в USB SS, для совместимости в USB 3 добавили старый дремучий USB 2 и в хабе тоже дублируется, т.е USB3 хаб содержит 2 раздельных хаба для USB SS и USB HS/FS/LS. На интерфейсе HS не хватит полосы более чем на 1 камеру. Трансляторов SS-HS не существует.

Когда вы втыкаете камеры в порты системника видимо оно идет на разные контроллеры.

А как можно было бы построить систему, чтобы заполучить изображение с 4 камер одновременно и чтоб картинка была стабильной?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Два варианта:

1. Подключить к разным хост-контроллерам на ПК

2. Уронить FPS до 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 часов назад, aaarrr сказал:

Два варианта:

1. Подключить к разным хост-контроллерам на ПК

2. Уронить FPS до 5

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

* пересесть на ethernet, сырые 4*640*480*30*16 в гигабит пролезут

* включить компрессию

* если камеры не какие-то сильно специальные можно взять китайские cctv камеры с wifi, они там нынче чуть ли не от 5$ начинаются

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Ivan21 said:

Может кажду камеру посадить на отдельный микроконтроллер, который будет считывать данные, а затем передавать в главный процессор?

Каким способом передавать?

 

1 hour ago, Ivan21 said:

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

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

Подробности нужны: какие камеры, какой ресурс нужен для обработки и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...