我正在尝试将视频输出(帧序列)到任何 qt 可见小部件。一开始我认为 QLabel 足以满足这一点......但我错了。对于处理大图像(例如 1080p)的处理器来说,转换为像素图过于过载。
还有其他解决方案吗? (不是QLabel?)
一帧的代码示例:
QImage m_outputFrameImage(width, height, QImage::Format_RGB888);
memcpy(m_outputFrameImage.bits(), m_frameRGB->data[0], height * width * 3);
QPixmap pixmap = QPixmap::fromImage(m_outputFrameImage); // BAD, slow and high load
/* Bad too (Same code?)
QPainter painter;
painter.begin(&pixmap);
painter.drawImage(0, 0, m_outputFrameImage);
painter.end();
*/
labelVideo->setPixmap(pixmap);
是的,将帧渲染到QGLWidget
并让视频卡处理它。 Qt MultimediaKit、Phonon 等就是这样做的。
前段时间我分享了一些代码来演示如何完成此任务:通过 OpenGL 进行图像缩放 (KeepAspectRatioByExpanding) https://stackoverflow.com/questions/9011108/image-scaling-keepaspectratiobyexpanding-through-opengl
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)