Как преобразовать буфер ueyesrc в текстуру opengl?

Я пытаюсь заставить камеру UI-3370CP-C-HQ R2 работать на Coral DevBoard с gstreamer.

Поскольку камера не является стандартной камерой v4l2, я загрузил и скомпилировал ueyesrcплагин gst (https://github.com/atdgroup/gst-plugin-ueye) на панели разработки.

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

Пока что единственный способ получить что-то с камеры - это сохранить кадр в формате jpeg:

gst-launch-1.0 tee ueyesrc num-buffers=10 ! jpegenc ! filesinklocation=ueyesrc-frame.jpg

Пример конвейера, предоставленный ueyesrc gst-launch-1.0 ueyesrc ! videoconvert ! xvimagesink не работает в моем случае, потому что на устройстве нет X-сервера (но Wayland)

gst-launch-1.0 ueyesrc ! videoconvert ! glimagesink возвращает следующую ошибку:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0";
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink: Failed to convert multiview video buffer
Additional debug info:
gstglimagesink.c(1741): gst_glimage_sink_prepare (): /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink
Execution ended after 0:00:00.486558117
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

Со стандартной веб-камерой USB (Logitech HD Pro Webcam C920), gst-launch-1.0 v4l2src ! videoconvert ! glimagesink работает отлично.

Я действительно не понимаю, что происходит не так или как найти больше подсказок по этому поводу, я полагаю, что мне не хватает промежуточного этапа преобразования, но я не знаю, как это исправить. Есть у кого-нибудь идея?

изменить 1: это действительно проблема преобразования. Я заставил его работать, указав формат вvideoconvert шапки: gst-launch-1.0 ueyesrc exposure=2 ! videoconvert ! video/x-raw,format=YUY2 ! glimagesink sync=FalseХотя загрузка ЦП очень высока (>90% на всех 4 ядрах iMx8), а максимальная частота кадров достигает 6,5 кадров в секунду.

0 ответов

Другие вопросы по тегам