Qt Overlay поверх GStreamer
У меня есть вопрос, учитывая текущую настройку:
- Yocto Linux on
iMX6
- Ни оконный, ни дисплей-менеджер
- Полнофункциональное приложение Qt, протестировано на Debian 9
Приложение состоит из 2 основных элементов:
GStreamer
часть, с imxg2dvideosink- Полупрозрачный Qt Overlay, который должен отображаться поверх потока
Вопрос:
Как выполнить отображение оверлея над потоком, когда обе части отображаются на весь экран (на весь экран)? Возможные решения:
/dev/fb1
в качестве наложения на/dev/fb0
(Как разделить одно приложение на дваfb
х?)- Использовать дисплей-менеджер?
- Использовать оконный менеджер?
linuxfb
вместоeglfs
?
Мое текущее (не рабочее) решение:
- С помощью
-platform eglfs
- Приложение сначала запустится
GStreamer
, а затем показать наложение
1 ответ
Решение
Я нашел решение сам. Поделиться ниже:
1) Запустите приложение Qt на /dev/fb1
:
export QT_QPA_EGLFS_FB=/dev/fb1
(Уточнить/dev/fb1
какeglfs
кадровый буфер)echo 0 > /sys/class/graphics/fb1/blank
(Разблокировать фреймбуфер)fbset -fb /dev/fb1 --geometry <your geometry here>
(Установить геометрию кадрового буфера)./YourApplication -platform eglfs
(Запустить приложение)
Используйте цветовой ключ, если вы хотите полную непрозрачность при наличии полностью прозрачных частей наложения.
2) Запустите GStreamer на /dev/fb0
:
gst-launch-1.0 videotestsrc ! imxg2dvideosink framebuffer=/dev/fb0
Это решение для eglfs
, Другие возможности linuxfb
,