QGraphicsView 中的 QGraphicsVideoItem
QGraphicsVideoItem in QGraphicsView
我正在尝试在 QT5.5 中的 QGraphicsView 中绘制视频。这是代码
QString path = "video.mp4";
qDebug() << QFile::exists(path);
ui->graphicsView->setScene(new QGraphicsScene());
QMediaPlayer pl;
QGraphicsVideoItem vid;
pl.setVideoOutput(&vid);
qDebug() << pl.error();
vid.setSize( QSizeF(1920, 1080) );
pl.setMedia( QUrl::fromLocalFile( path ) );
qDebug() << pl.error();
ui->graphicsView->scene()->addItem(&vid);
ui->graphicsView->resize(1920, 1080);
pl.play();
qDebug() << pl.error();
什么都没画。没有错误。文件已存在。也许插件有问题?或硬件加速,因为我在带有独立卡的笔记本上。提前谢谢你。
好的,我知道了。我的愚蠢错误。 QMediaPlayer 和 QGraphicsVideoItem 在退出范围后被删除。
以防其他人进入此页面。您可能必须使用 QVideoWidget 而不是 QGraphicsVideoItem。
https://whynhow.info/30713/How-to-make-friends-QCamera-and-QGraphicsVideoItem
// Note: QGraphicsVideoItem doesn't work but QVideoWidget does
// https://whynhow.info/30713/How-to-make-friends-QCamera-and-QGraphicsVideoItem?
auto *vidWidget = new QVideoWidget;
mpScene->addWidget(vidWidget);
mpCamera = new QCamera(acCamera, this);
mpCamera->setViewfinder(vidWidget);
mpCamera->setCaptureMode(QCamera::CaptureVideo);
我正在尝试在 QT5.5 中的 QGraphicsView 中绘制视频。这是代码
QString path = "video.mp4";
qDebug() << QFile::exists(path);
ui->graphicsView->setScene(new QGraphicsScene());
QMediaPlayer pl;
QGraphicsVideoItem vid;
pl.setVideoOutput(&vid);
qDebug() << pl.error();
vid.setSize( QSizeF(1920, 1080) );
pl.setMedia( QUrl::fromLocalFile( path ) );
qDebug() << pl.error();
ui->graphicsView->scene()->addItem(&vid);
ui->graphicsView->resize(1920, 1080);
pl.play();
qDebug() << pl.error();
什么都没画。没有错误。文件已存在。也许插件有问题?或硬件加速,因为我在带有独立卡的笔记本上。提前谢谢你。
好的,我知道了。我的愚蠢错误。 QMediaPlayer 和 QGraphicsVideoItem 在退出范围后被删除。
以防其他人进入此页面。您可能必须使用 QVideoWidget 而不是 QGraphicsVideoItem。
https://whynhow.info/30713/How-to-make-friends-QCamera-and-QGraphicsVideoItem
// Note: QGraphicsVideoItem doesn't work but QVideoWidget does
// https://whynhow.info/30713/How-to-make-friends-QCamera-and-QGraphicsVideoItem?
auto *vidWidget = new QVideoWidget;
mpScene->addWidget(vidWidget);
mpCamera = new QCamera(acCamera, this);
mpCamera->setViewfinder(vidWidget);
mpCamera->setCaptureMode(QCamera::CaptureVideo);