Qt 覆盖 GStreamer
Qt Overlay over GStreamer
考虑到当前设置我有一个问题:
- Yocto Linux
iMX6
- 既不是 window-,也不是显示管理器
- 功能齐全的 Qt 应用程序,已在 Debian 9 上测试
该应用程序包含 2 个主要元素:
- 一个
GStreamer
部分,带有 imxg2dvideosink
- 一个半透明的 Qt Overlay,应该显示在流上
问题:
如何实现在流上显示叠加层,同时让两个部分全屏显示(填满整个屏幕)? 可能的解决方案:
/dev/fb1
作为 /dev/fb0
的叠加(如何将单个应用程序拆分为两个 fb
?)
- 使用显示管理器?
- 使用 window-经理 ?
linuxfb
而不是 eglfs
?
我当前(不工作)的解决方案:
- 使用
-platform eglfs
- 应用程序将首先启动
GStreamer
,然后显示叠加层
我自己找到了解决方案。分享如下:
1) 运行 /dev/fb1
上的 Qt 应用程序:
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) 运行 /dev/fb0
上的 GStreamer:
gst-launch-1.0 videotestsrc ! imxg2dvideosink framebuffer=/dev/fb0
这是 eglfs
的解决方案。其他可能性是 linuxfb
.
考虑到当前设置我有一个问题:
- Yocto Linux
iMX6
- 既不是 window-,也不是显示管理器
- 功能齐全的 Qt 应用程序,已在 Debian 9 上测试
该应用程序包含 2 个主要元素:
- 一个
GStreamer
部分,带有 imxg2dvideosink - 一个半透明的 Qt Overlay,应该显示在流上
问题:
如何实现在流上显示叠加层,同时让两个部分全屏显示(填满整个屏幕)? 可能的解决方案:
/dev/fb1
作为/dev/fb0
的叠加(如何将单个应用程序拆分为两个fb
?)- 使用显示管理器?
- 使用 window-经理 ?
linuxfb
而不是eglfs
?
我当前(不工作)的解决方案:
- 使用
-platform eglfs
- 应用程序将首先启动
GStreamer
,然后显示叠加层
我自己找到了解决方案。分享如下:
1) 运行 /dev/fb1
上的 Qt 应用程序:
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) 运行 /dev/fb0
上的 GStreamer:
gst-launch-1.0 videotestsrc ! imxg2dvideosink framebuffer=/dev/fb0
这是 eglfs
的解决方案。其他可能性是 linuxfb
.