0

我正在尝试将一些代码移植到 Qt 6 的重新设计的 QtMultimedia 框架中,并遇到了很多 API 消失的问题。

其中之一是 QCameraViewfinder,据我了解,它是当前 QCamera 图像馈送的简单查看器。它曾经是 QVideoWidget 的子类,现在仍然存在,它的文档说明了以下内容:

将 QVideoWidget 附加到 QMediaPlayer 或 QCamera 允许它显示该对象的视频或图像输出。

player = new QMediaPlayer;
player->setSource(QUrl("http://example.com/myclip1.mp4"));

videoWidget = new QVideoWidget;
player->setVideoOutput(videoWidget);

videoWidget->show();
player->play();

注意:一次只能将一个显示输出附加到媒体对象。

问题是,没有办法做 QCamera::setVideoOutput(QVideoWidget*) 因为该功能不存在。我也找不到连接两者的替代 API。这是他们忘记提供的东西还是我错过了什么?我查看了相关类的源代码和文档,但终其一生都找不到能够让我简单了解 QCamera 当前视频源的魔法咒语。

4

1 回答 1

0

你必须使用QMediaCaptureSession

#include <QApplication>
#include <QCamera>
#include <QMediaDevices>
#include <QMediaCaptureSession>
#include <QVideoWidget>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QVideoWidget videoWidget;
    videoWidget.resize(640, 480);
    videoWidget.show();

    QCamera camera(QMediaDevices::defaultVideoInput());
    camera.start();

    QMediaCaptureSession mediaCaptureSession;
    mediaCaptureSession.setCamera(&camera);
    mediaCaptureSession.setVideoOutput(&videoWidget);

    return a.exec();
}
于 2021-10-26T18:23:53.427 回答