如何在 Broadcom VideoCore IV 上使用eglfs时录制屏幕

如何在 Broadcom VideoCore IV 上使用eglfs时录制屏幕

我有一个使用“eglfs”平台在 Raspberry Pi 3 上运行的全屏 Qt 应用程序。它使用 KMS/DRM 和/dev/dri/core0GPU 设备进行绘制。 GPU 是 Broadcom VideoCore IV。

我想录制屏幕但没有成功。我最接近的是:

  1. 使用ffmpegkmsgrab输入设备。不幸的是ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4产生了乱码视频,如下所示。

    ffmpeg输出乱码

  2. 将 Qt 重定向到帧缓冲区。例如:./my_app -platform linuxfb:fb=/dev/fb0。然后是更直接的ffmpeg -f fbdev -i /dev/fb0 output.mp4工作。不幸的是,linuxfb它不会渲染诸如Qt5Compat.GraphicalEffects之类的功能layer.effect,因此我的按钮不会显示。

鉴于乱码输出ffmpeg看起来如此接近,我尝试传递各种format_modifier来自drm_fourcc.h但没有看到任何差异。当然有一组hwmapformat_modifier标志可以确保输出类似于屏幕上显示的内容?

作为参考,我使用内核版本 5.4.83-v8 和dtoverlay=vc4-fkms-v3d.如果我认为会有什么不同的话,我可以调整这些事情。

相关内容