如何解决Qt5/Yocto:已部署应用程序的捕获屏幕/屏幕录制
需要为某些视频捕获 GUI(如果可能的话)。使用桌面构建而不是部署的应用程序是可能的,但对于更原生的方法,我会在设备上运行它。 设置包括带有 Yocto Linux 的 ARM 板(四核,因此应该有足够的性能)和基于 Qt 5.12 的构建。
我进行了一些广泛的网络搜索,但只找到了一些有关如何捕获单个屏幕的提示。 Qt 是否提供内置功能?
欢迎提供任何提示(关键词)!
edit 20210311:感谢到目前为止的输入。但是 - 由于没有开发人员应该进行记录 - 不需要篡改应用程序的代码。 是的,它是一个基于 QML 的应用程序。 当前状态:强烈暗示交叉编译 ffmpeg 并从 /dev/fb0 抓取帧将是最好的。但我还没有试过。
解决方法
如果您使用 QML,则可以使用 Item.grabToImage()
method 抓取任何元素的图像。否则,您将需要使用显示服务器方法,这意味着您需要学习 X11 或 Wayland 函数,具体取决于您的 Yocto 设置所使用的功能。
您只需使用 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 库的完整示例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。