5

qtの可視ウィジェットにビデオ出力(フレームのシーケンス)を作成しようとしています。最初はQLabelで十分だと思っていましたが…間違っていました。ピックスマップへの変換は、大きな画像(たとえば1080p)のプロセッサには過負荷になりすぎます。

他の解決策はありますか?(QLabelではありませんか?)

1フレームのコード例:

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);
4

1 に答える 1

5

はい、フレームを にレンダリングしQGLWidget、ビデオ カードに処理させます。それが Qt MultimediaKit や Phonon などのやり方です。

少し前に、このタスクを達成する方法を示すコードを共有しました: OpenGL による画像のスケーリング (KeepAspectRatioByExpanding)

于 2012-06-25T18:05:36.360 に答える