用Qt5的Qpainter画视频解码的图像,发现CPU占用极高(50%),有方法能够降低cpu占用吗?

使用Qt5画解码的视频图像,通过槽函数运行update方法触发paintevent重绘,CPU占用率极高,有没有方法降低CPU使用率,能否使用QOpe…
关注者
91
被浏览
63,314

13 个回答

qt widgets用的是cpu渲染,而不是gpu,性能并不优秀,只适合用来做界面,而不是做多媒体。

做多媒体的话,qt有专门封装的QtMultiMedia类库。其中包含了音频、视频、摄像解码、处理、播放。其中有专门用于播放的控件。

总之,尽量不要手撸paintEvent

——————————

另,还可以借用第三方更专业的库。比如ffmpeg+opencv。

qt+opencv联合开发gui是很常见的,网上不难搜到教程

最后,另一位答主推荐的方法是最好的,用QOpenGlWidget,这个类的绘制操作是通过opengl渲染,走的就是gpu,而不是常规QWidget那样走cpu

用QOpenGLWidget(不要用QGLWidget,高DPI有坑),在它的paintEvent中以smooth模式画drawImage,定时update,最简单高效