これは、QVideoFrame と QAbstractVideoSurface を使用することで、Qt 4.7 で実際に可能になります。Qt には、プログラムで構築された QVideoFrames を表示できるビデオ ウィジェットを作成するための次の優れた例もあります。
http://qt-project.org/doc/qt-4.8/multimedia-videowidget.html
このウィジェットを QVideoFrame のマッピング機能と組み合わせて、個々のビデオ フレームを適切にフォーマットされたデータで埋めることができます。それは次のようになります。
videoWidget をインスタンス化します。
VideoWidgetSurface * videoWidget = new VideoWidgetSurface();
QSize videoSize(500,500); // supplement with your video dimensions
// look at VideoWidgetSurface::supportedPixelFormats for supported formats
QVideoSurfaceFormat format( videoSize, QVideoFrame::Format_RGB32, QAbstractVideoBuffer::QPixmapHandle)
// possibly fill with initial frame?
videoWidget->start(format);
...そして、ビデオ ウィジェットの現在のフレームを更新する場合:
// If you don't need the data in any past frames you can probably just create one frame
// and just use it repeadtly (as VideoWidgetSurface only keeps track of one frame at a time)
QVideoFrame aFrame(32 * format.frameWidth() * format.frameHeight(),format.frameSize(), 32 * format.frameWidth(),format.pixelFormat());
aFrame.map(QAbstractVideoBuffer::WriteOnly);
QRgb * pixels = aFrame.bits();
// perform pixel manipulation here...
aFrame.unmap();
videoWidget->present(aFrame);
..再生を終了するには...
videoWidget.stop();