Qt5/Yocto:已部署应用程序的捕获屏幕/屏幕录制

时间:2021-03-02 09:32:41

标签: linux qt qt5 yocto screen-recording

需要为某些视频捕获 GUI(如果可能的话)。使用桌面构建而不是部署的应用程序是可能的,但对于更原生的方法,我会在设备上运行它。 设置包括带有 Yocto Linux 的 ARM 板(四核,因此应该有足够的性能)和基于 Qt 5.12 的构建。

我进行了一些广泛的网络搜索,但只找到了一些有关如何捕获单个屏幕的提示。 Qt 是否提供内置功能?

欢迎提供任何提示(关键词)!

edit 20210311:感谢到目前为止的输入。但是 - 由于没有开发人员应该进行记录 - 不需要篡改应用程序的代码。 是的,它是一个基于 QML 的应用程序。 当前状态:强烈暗示交叉编译 ffmpeg 并从 /dev/fb0 抓取帧将是最好的。但我还没有试过。

2 个答案:

答案 0 :(得分:1)

如果您使用 QML,则可以使用 Item.grabToImage() method 抓取任何元素的图像。否则,您将需要使用显示服务器方法,这意味着您需要学习 X11 或 Wayland 函数,具体取决于您的 Yocto 设置所使用的功能。

答案 1 :(得分:1)

您只需使用 QtAvi 库并根据小部件的屏幕截图创建自编排视频。对于快照,您可以将 this method 用于 QML 和波纹管代码用于小部件 s

QImage img(mywidget.size());
QPainter painter(&img);
mywidget.render(&painter);
img.save("/some/file.jpg");

QMediaRecorder 录制音频并将其作为音频文件发送到 QtAvi。在 this link 中,您可以找到 QtAvi 库的完整示例。