
Я работаю над проектом, в котором Raspberry Pi используется в качестве платы ввода-вывода для нескольких сервоприводов, которые на самом деле управляются другим компьютером, подключенным к RPi через Ethernet.
Мне нужно добавить в проект 2 USB-веб-камеры, и я хотел бы подключить их к RPi, чтобы сохранить единое расположение для ввода/вывода, если это имеет смысл.
Я ищу самый простой способ с минимальной задержкой пересылать входные данные с веб-камер на хост-компьютер. Я пытался использовать Usbip и ffmpeg для потоковой передачи данных, но столкнулся с проблемами с обоими методами. Есть ли другие предложения? или мне следует продолжать использовать один из методов, которые я пробовал.
Спасибо!
решение1
Есть ли у ваших веб-камер аппаратное сжатие? Или вы делаете сжатие на RPi? Его процессор VideoCore подходит для такого типа работы, но.... вы должны использовать OpenMAX для разгрузки на VideoCore, поскольку сопроцессор ARM, на котором работает Linux, даже близко не может сжать даже поток низкого разрешения. Программы, загружающие кодеки VideoCore, являются omxplayer
некоторыми gstreamer
плагинами.
Даже при использовании VideoCore у вас возникнут проблемы с пропускной способностью при получении необработанных видеоданных по внутреннему соединению с USB.
Поэтому ваши возможные варианты:
- Скопируйте предварительно сжатое (внутри самой веб-камеры) видео с USB на Ethernet.
- Используйте модуль камеры RPi, который подключается к широкополосному видеопорту Raspberry Pi, непосредственно в VideoCore для обработки и сжатия.
Последний вариант, скорее всего, будет иметь гораздо более низкую задержку, но вы получите только один поток. Теоретически возможно чередовать два потока через один видеопорт, но кодек на VideoCore должен быть разработан для приема и разделения двух потоков, а технические данные для этого доступны только по NDA крупнейшим клиентам Broadcom.
Дополнительную информацию о процессе разработки видеокодеков можно найти на форумах Rasberry Pi. Краткая версия: Broadcom выполняет большую часть работы, у Raspberry Pi Foundation есть доступ к техническим данным, но недостаточно инженеров, а NDA запрещает им передавать работу на подряд.