我有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/