【问题标题】:Qt Overlay over GStreamerGStreamer 上的 Qt 覆盖
【发布时间】:2018-06-30 23:20:12
【问题描述】:

我有一个关于当前设置的问题:

  • Yocto Linux on iMX6
  • 既不是窗口管理器,也不是显示管理器
  • 一个功能齐全的 Qt 应用程序,在 Debian 9 上测试

该应用程序包含 2 个主要元素:

  • GStreamer 部件,带有 imxg2dvideosink
  • 一个半透明的 Qt Overlay,应该显示在流上

问题:

如何在流上显示叠加层,同时将两个部分都全屏显示(填满整个屏幕)? 可能的解决方案:

  • /dev/fb1 作为/dev/fb0 的覆盖(如何将一个应用程序拆分为两个fb 的?)
  • 使用显示管理器?
  • 使用窗口管理器?
  • linuxfb 而不是 eglfs ?

我目前(不工作)的解决方案:

  • 使用-platform eglfs
  • 应用程序将首先启动GStreamer,然后显示叠加层

【问题讨论】:

  • 除非您知道如何使 imxg2dvideosink 渲染到您想要渲染的位置,否则您需要编写自己的 GStreamer 接收器。

标签: qt gstreamer yocto imx6 eglfs


【解决方案1】:

我自己找到了解决方案。分享如下:

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

【讨论】:

    猜你喜欢
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    相关资源
    最近更新 更多