我有YUY2格式的图片流。我想在QQuickItem上绘制这些图像-因此我可以将其与Qt Quick 2一起使用。

我的性能有问题,所以我的问题是重新绘制用C++编写的QML对象的最快方法是什么?是否有某种专用于渲染视频的对象?

我尝试过的是创建一个继承QQuickPaintedItem的类。我已经将YUY2图像转换为RGBA8888格式,然后使用QImage加载了它,然后使用QPainter对其进行了绘制。如果QQuickPaintedItem大-例如大于1000x1000,则证明效率不高。更快的方法是将QImage转换为QPixmap,然后使用QPainter进行绘制。现在效果不错,但是也许有更快的方法?例如,图像转换似乎太慢了。

最佳答案

我通过将 QQuickItem 与已定义的 updatePaintNode 函数一起使用来工作(来自Kuba Ober's注释的第一个想法)。

This example帮助了我很多。在其中NoisyNode类渲染背景(静态图像),并且Graph正在使用它。我将这两个类(class)带入了我的项目,并使它们适应了我的需求。我没问题显示1080x1920像素,30fps。据我了解,要显示视频,您最终需要将YUV转换为RGB,因此我立即进行了此操作,并使用了RGBA像素阵列。

关于c++ - 如何快速重绘QQuickItem?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40995664/

10-09 09:19