LINUX.ORG.RU

Видеокамера и одноплатник: поделитесь опытом.

 , ,


0

2

Подключил камеру по CSI к одноплатнику с RISC-V на борту. Под Ubuntu не завелась. Подключил USB камеру. Показывает слайд-шоу. Между кадрами несколько секунд проходит. Подключил USB камеру к одноплатнику на rockchip 3588. То же самое. Пробовал и под X11 и под Wailand. Без разницы. Подключил USB камеру к ноуту с X86 процом. Относительно нормально работает.

В чем может быть причина таких тормозов? Хреновые ядра для ARM/RISC-v? Rockchip как минимум видео норамльно тянет.

Ответ на: комментарий от IIIypuk
v4l2-ctl --list-devices
rkcif-mipi-lvds2 (platform:rkcif):
	/dev/media0

WebCamera: WebCamera (usb-fc800000.usb-1):
	/dev/video11
	/dev/video12
	/dev/media1
goga@station-m3:~$ v4l2-ctl --device=/dev/video11 --all
Driver Info:
	Driver name      : uvcvideo
	Card type        : WebCamera: WebCamera
	Bus info         : usb-fc800000.usb-1
	Driver version   : 5.10.110
	Capabilities     : 0x84a00001
		Video Capture
		Metadata Capture
		Streaming
		Extended Pix Format
		Device Capabilities
	Device Caps      : 0x04200001
		Video Capture
		Streaming
		Extended Pix Format
Media Driver Info:
	Driver name      : uvcvideo
	Model            : WebCamera: WebCamera
	Serial           : WebCamera
	Bus info         : usb-fc800000.usb-1
	Media version    : 5.10.110
	Hardware revision: 0x00000307 (775)
	Driver version   : 5.10.110
Interface Info:
	ID               : 0x03000002
	Type             : V4L Video
Entity Info:
	ID               : 0x00000001 (1)
	Name             : WebCamera: WebCamera
	Function         : V4L2 I/O
	Flags            : default
	Pad 0x01000007   : 0: Sink
	  Link 0x02000013: from remote pad 0x100000a of entity 'Extension 4' (Video Pixel Formatter): Data, Enabled, Immutable
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
	Width/Height      : 2560/1440
	Pixel Format      : 'MJPG' (Motion-JPEG)
	Field             : None
	Bytes per Line    : 0
	Size Image        : 7372800
	Colorspace        : sRGB
	Transfer Function : Rec. 709
	YCbCr/HSV Encoding: ITU-R 601
	Quantization      : Default (maps to Full Range)
	Flags             : 
Crop Capability Video Capture:
	Bounds      : Left 0, Top 0, Width 2560, Height 1440
	Default     : Left 0, Top 0, Width 2560, Height 1440
	Pixel Aspect: 1/1
Selection Video Capture: crop_default, Left 0, Top 0, Width 2560, Height 1440, Flags: 
Selection Video Capture: crop_bounds, Left 0, Top 0, Width 2560, Height 1440, Flags: 
Streaming Parameters Video Capture:
	Capabilities     : timeperframe
	Frames per second: 30.000 (30/1)
	Read buffers     : 0
                     brightness 0x00980900 (int)    : min=-64 max=64 step=1 default=18 value=18
                       contrast 0x00980901 (int)    : min=0 max=95 step=1 default=2 value=2
                     saturation 0x00980902 (int)    : min=0 max=100 step=1 default=64 value=64
                            hue 0x00980903 (int)    : min=-2000 max=2000 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                          gamma 0x00980910 (int)    : min=100 max=300 step=1 default=100 value=100
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=2 (60 Hz)
				0: Disabled
				1: 50 Hz
				2: 60 Hz
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
                      sharpness 0x0098091b (int)    : min=1 max=7 step=1 default=2 value=2
         backlight_compensation 0x0098091c (int)    : min=0 max=1 step=1 default=0 value=0
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3 (Aperture Priority Mode)
				1: Manual Mode
				3: Aperture Priority Mode
              exposure_absolute 0x009a0902 (int)    : min=3 max=2047 step=1 default=166 value=166 flags=inactive
                 focus_absolute 0x009a090a (int)    : min=0 max=1023 step=1 default=0 value=290 flags=inactive
                     focus_auto 0x009a090c (bool)   : default=0 value=1
zloy_starper ★★★
() автор топика

В чем может быть причина таких тормозов? Хреновые ядра для ARM/RISC-v? Rockchip как минимум видео норамльно тянет.

Ну а там в мониторинг посмотреть? Может он видео тянет потому что видео на встроенном декодере декодируется, а у камеры формат не подходящий

cobold ★★★★★
()
Ответ на: комментарий от Jullyfish

Что за камера?

Дешевая USB камера DEXP DQ4M3FA1. Вряд ли это хоть что-то о ней скажет.

Как получаете с неё видеопоток?

В данный момент через vlc. На rockchip-е стоит armbian. Поставил linphone. Он не смог стартовать - просит какой-то addon, который хрен поймешь, в каком пакете имеется. В ubuntu для risc-v вообще нет linphone.

zloy_starper ★★★
() автор топика
Ответ на: комментарий от zloy_starper

Дешевая USB камера DEXP DQ4M3FA1

Подключил камеру по CSI

А как вы это сделали?

Я сомневаюсь, что одноплатник плохо получает видеопоток, мне кажется, что проблема с декодером (но вот неуверен). И с MJPG не работал.

Дурацкий вариант, но я попробовал через netcat постримить. Возьмите одноплатник и сделайте на нём:

v4l2-ctl -d /dev/video11 \
--set-fmt-video=width=2560,height=1440,pixelformat=MJPG \
--stream-mmap --stream-to=- | nc -l 55555

На машинке x86:

nc <ip адрес одноплатника> 55555 | mpv - \
--demuxer-lavf-format=video4linux2 \
--demuxer-lavf-o-set input_format=mjpeg

Если проделаете сие, поделитесь, что получилось.

Jullyfish
()
Последнее исправление: Jullyfish (всего исправлений: 1)

Ну, касательно CSI, много лет назад я купил с каким-то Orange комплектную камеру и и долго пробовал всякие сборки и только в одной завелась. Если за столько лет ситуация не изменилась, значит так и задумано. Ну, и года три-четыре назад считалось, что если хочется видеонаблюдение из одной-двух usb-камер, то лучше брать плату на intel atom, чем связываться с ARM.

как минимум видео норамльно тянет.

На каком разрешении? И какое разрешение было с USB-камеры? И usb 2 или usb 3?

mky ★★★★★
()

C одноплатниками и csi нужна корректная настройка железа в DT. Всякие там ширина/высота/клоки/тайминги и тд. Это вообще ни разу не плагандплей.

Для usb чуток полегче, но тоже есть варианты. Куда и как воткнул, какие режимы поддерживает камера, как это все разжимается в видеобуфер и т.д. У всяких армо- и риско- поделок весьма специфичные блоки для обработки видео. Обычно они заточены на конвейер из csi в видеопамять. Тогда все очень быстро. А если принимать по usb, копировать в память, потом передавать в VI (для разжатия) потом обратно в память. Могут быть нюансы.

yax123 ★★★★★
()
Ответ на: комментарий от Jullyfish

У меня есть две камеры: одна csi, другая usb. С первой совсем все плохо. Она может быть подключена к одноплатнику с risc-v. Там я чудес не ожидал, но и завелась она только под openharmony. А это вообще мрак. Там все на китайском.

Я сомневаюсь, что одноплатник плохо получает видеопоток, мне кажется, что проблема с декодером (но вот неуверен). И с MJPG не работал.

Подозреваю, что так и есть.

На машинке x86 указанная команда не завелась.

Error parsing commandline option demuxer-lavf-o-set: option requires parameter
Make sure you're using e.g. '--demuxer-lavf-o-set=value' instead of '--demuxer-lavf-o-set value'.

Попытался man почитать, но не выдержал развидеть портянку на сотню страниц.

zloy_starper ★★★
() автор топика
Ответ на: комментарий от zloy_starper

она только под openharmony. А это вообще мрак. Там все на китайском

можно нагуглить, как оно переключается

только клавиатуру подключи, чтобы Esc жать

сначала обычное ведроидное меню, шестеренка (настройки), а дальше то ли третий, то ли четвертый пункт сверху

дальше не помню, потыкай. тоже где-то в середине пунктов будет выбор языка

но harmony мрак, это тот же ведроид, тоже огороженный

З.Ы. orange pi rv2?

router ★★★★★
()
Последнее исправление: router (всего исправлений: 2)

Вобщем, похоже, что с ARM и камерой все печально. mpv при старте под X ругается, что не может найти интерфейс вывода с поддержкой аппаратного ускорения. Результат описан в стартовом посте. Если запустить под wailand, то ни на что не ругается, но результат мало отличим.

Если задать разрешение 640х480, то можно уже лицезреть некое видео. Но оно отстает на секунду где-то. Разницы под X и wailand тут тоже практически не видно.

Я не занток потрохов v4l, но все-таки. Не верится, что rk3588 не способен забрать с usb видео поток. Видео драйвер panthor таки реализует аппаратное 3д. И вроде бы даже софтом поддерживается блок аппаратного видео-декодера. По карйней мере, HD видео из инета врспроизводится без проблем.

Получается, что по логике не должно быть затыков со обеих сторон. Но где-то между ними что-то тупит. Может это перекодирование из одного формата в другой? Но mpv пишет, что получает видео в формате yuyv422 -> yuv420p. То есть по меньшей мере он не должен что там разжимать и пережимать. Или сильно затратно преобразование из yuv в rgb?

Подскажите, как просто сохранить поток в файл.

zloy_starper ★★★
() автор топика
Ответ на: комментарий от router

Веришь, нет, все облазил несколько раз. Выбор языка не нашел. Да и фиг бы с ней. Все равно эта harmony просто хрень какая-то, что называется ни пришей лошадке хвост. Едтнственное, для чего может сгодиться, это убедиться, что хотя бы железо в принципе работает. Убедился - работает.

Да, железяка orange pi rv2. Я, честно сказать, не думал, что в device tree должна быть прописана конфа конкретной камеры. Хотя, конечно, если просто подумать об этом, то сие вполне логично. Ну можно будет попытаться сравнить разные DT, если получится найти в исходном тексте от harmony. Вообще то под ubuntu камера по меньшей мере определялась.

zloy_starper ★★★
() автор топика
Ответ на: комментарий от Jullyfish

Вобщем вчера я немного протупил. Но не только я :)

На одноплатнике запускаем:

v4l2-ctl -d /dev/video0 \
--set-fmt-video=width=1920,height=1080,pixelformat=MJPG \
--stream-mmap --stream-to=- | nc -u <адрес x86> 55555

На x86 я ffplay использовал, v4l2-utils тоже работает. В итоге видео воспроизводится. Как-то немного корявенько, но воспроизовдится. При этом большой разницы при перемене направления потока я не заметил. Да и когда с камеры x86 на его же экран воспроизводить, то тоже бошьшой разницы не заметно.

Остается непонятно, отчего на локальном ARM-е такие тормоза.

zloy_starper ★★★
() автор топика
Ответ на: комментарий от zloy_starper

На x86 я ffplay использовал

А с какими параметрами? Для себя интересуюсь, с MJPG не сталкивался.

Как-то немного корявенько

А в чём корявость?

Правильно ли я понимаю, что ситуация следующая:

  1. Если подключить монитор к одноплатнику и начать просмотр видеопотока с CSI камеры, выходит жесть?
  2. Если видеопоток транслировать на x86 машину и на ней смотреть то всё ок?

Если ответ на оба вопроса «да», то я подозреваю, что на одноплатнике нет нормального декодера. Т.е. видео он хорошо сжимает для передачи, а сам его разжимать для просмотра не умеет.

Jullyfish
()
Ответ на: комментарий от Jullyfish

А с какими параметрами? Для себя интересуюсь, с MJPG не сталкивался.

Вечером посмотрю, скажу точно.

А в чём корявость?

Как минимум есть задержка в 0,5 - 1 сек. Это объективно. Ну и какое-то, возможно субъктивное, ощущение резиновости. Делаешь какое-нибудь движение перед камерой. На экране сначала изображение отстает, а потом как бы ускоряется, пытаясь догнать реальность.

С CSI камера работает только на одноплатнике с RISC-V и на openharmony. Воспроизводится именно видео. Про качество уже не помню, пробовал минимум 2 недели назад. Может оно и тормозило, но не прям ужас ужас.

По второму пункту ответ да. При чем, если видео транслировать с x86 машины на ARM одноплатник, то особой разницы можно и не заметить.

zloy_starper ★★★
() автор топика