Qt的Label->setPixmap();CPU占用太高

今天也要元气满满哦 2015-07-02 11:34:19
  
/*rgbData 是经过转码的视频流文件 unsigned char* rgbData*/
QImage image1(rgbData,iWidth,iHeight,QImage::Format_RGB888);
QImage imgScaled1 = image1.scaled(120, 90, Qt::IgnoreAspectRatio);
QPixmap pixmap1 = QPixmap::fromImage(imgScaled1);
/*在QLabel上绘制视频
m_pLocalVideoLabel->setPixmap(pixmap1);



就是这几句代码 占用的 CPU高达30%,这几句是放在槽函数中的,当有视频传过来会进行视频的转码操作,然通过信号将转码的视频流传过来进行绘图

...全文
3120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
true__false 2015-07-04
  • 打赏
  • 举报
回复
我也正在用QLabel 显示视频帧,发现闪烁是否严重,楼主怎么解决?
foruok 2015-07-04
  • 打赏
  • 举报
回复
你这里QImage对象创建、scaled、image转pixmap,全是耗时操作。有两个建议: 1.放弃QLabel,用QWidget,自己绘制QImage,少一次image到pixmap的转换,看看效果 2.第一步还不满意,可以考虑使用 OpenGL绘制,参考 Framebuffer Object 2 Example
  • 打赏
  • 举报
回复
引用 1 楼 Creator_莫言的回复:
应该是视频数据转成图片比较占用cpu吧
转码部分已经优化了,将上面这部分注释掉的话,cpu就可以下降30%了
Creator_莫言 2015-07-02
  • 打赏
  • 举报
回复
应该是视频数据转成图片比较占用cpu吧

21,495

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧