我有YUY2格式的图像流。我想在QQuickItem
上绘制这些图像 - 所以我可以在Qt Quick 2中使用它。
我的性能有问题,所以我的问题是重写用C ++编写的QML对象的最快方法是什么?有没有专门用于渲染视频的对象?
我尝试过创建一个继承QQuickPaintedItem
的类。我已将YUY2图像转换为RGBA8888格式,然后使用QImage
加载它,然后使用QPainter
绘制它。如果QQuickPaintedItem
很大,则证明效率不高 - 例如大于1000x1000。更快捷的方法是将QImage
转换为QPixmap
,然后使用QPainter
进行绘制。它现在有点好,但也许有更快的方法?例如,图像转换过程似乎太慢了。
答案 0 :(得分:1)
我使用QQuickItem
定义了updatePaintNode
函数(来自Kuba Ober's评论的第一个想法)来实现这一点。
This example帮了我很多忙。其中NoisyNode
类呈现背景(静态图像),Graph
正在使用它。我把这两个课程带到了我的项目中并根据我的需要进行了调整。我没有问题显示1080x1920像素,30fps。据我所知,要显示一个视频,你最终需要将YUV转换为RGB,所以我立即做了这个并使用RGBA像素数组。