Qt 应用程序断言在第二次启动时失败

Qt application assertion fails on second launch

再次尝试在 QGraphicsView 中显示视频。现在我在第二次应用程序启动后断言失败:

ASSERT: "m_surface" in file player\mfvideorenderercontrol.cpp, line 2346

这是我的代码:

pl = new QMediaPlayer();
vid = new QGraphicsVideoItem();
pl->setVideoOutput(vid);
qDebug() << pl->error();

vid->setSize( QSizeF(1920, 1080) );
vid->setPos(QPointF(-500,-500));

pl->setMedia( QUrl::fromLocalFile( path ) );
qDebug() << pl->error();

ui->graphicsView->scene()->addItem(vid);
ui->graphicsView->setFixedSize(1920, 1080);
qDebug() << pl->error();
pl->play();

我用 *.avi 和 *.mp4 文件进行了测试。同样的问题。步骤如下:

如果我在断言 window 中按 Skip,一切都会再次正常。

提前致谢。

已解决。当调用 set media 时,有可能不是播放器需要的所有东西都在那个时候被初始化。解决方案是添加诸如 QTimer::singleShot( 1000, this, SLOT( initAndPlayVideo() ) ); 之类的内容,或者将此插槽放在某些按钮点击上。