簡體   English   中英

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 文件進行了測試。 同樣的問題。 以下是步驟:

  • 我將avi文件放在路徑中。
  • 構建/啟動應用程序。
  • 一切都很好。 視頻作品。
  • 關閉應用程序,再啟動一次。
  • 斷言失敗。
  • 將路徑中的文件更改為 mp4。
  • 構建/啟動應用程序。
  • 一切又好了。
  • 等等。

如果我在斷言窗口中按Skip ,一切都會再次正常。

先感謝您。

得到解決方案。 當調用 set media 時,有可能不是玩家所需的一切都在那個時候初始化。 解決方案是添加類似QTimer::singleShot( 1000, this, SLOT( initAndPlayVideo() ) ); 或將此插槽放在某些按鈕上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM