在QVideoWidget中显示QVideoFrame

时间:2018-07-14 14:42:19

标签: c++ qt5 windows-8.1

我想在QVideoWidget中显示QVideoFrame,可以吗? 我正在编写一个视频会议应用程序,并且我需要一种有效的方法来显示QVideoFrame,因为我可能需要同时显示几个(来自多个用户)。

我已经尝试过将视频帧转换为QImage,然后将其显示在QLabel中,但是该帧是颠倒的。这是我使用的代码:

QVideoFrame vf(frame); // frame is a QVideoFrame probed by a QVideoProbe

vf.map(QAbstractVideoBuffer::ReadOnly);
QImage img(vf.bits(), vf.width(), vf.height(), QVideoFrame::imageFormatFromPixelFormat(vf.pixelFormat()));
m_label->setPixmap(QPixmap::fromImage(img));
vf.unmap();

我猜想用QVideoWidget进行处理会效率更高,因为这是它的目的,但是我不知道它是如何工作的。我找到了一个用法示例,但这与我想做的事情(显示QVideoFrame)无关。

我在Windows 8.1和MSVC 2015上使用Qt 5.11。

0 个答案:

没有答案