2016-06-19 136 views
2

如果只播放一個視頻,它是成功的,但兩三個,它是失敗。 我注意到QGraphicsVideoItem的文檔:如何在Qt中同時播放QGraphicsView中的多個視頻?

注意:一次只能將一個顯示輸出附加到媒體對象。

所以,我想知道如何在QGraphicsView中拍攝更多的視頻? 謝謝!

我的測試代碼:

#include <QtWidgets/QApplication> 
#include <QGraphicsScene> 
#include <QGraphicsVideoItem> 
#include <QMediaPlayer> 
#include <QGraphicsView> 

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

QGraphicsScene scene; 
scene.setSceneRect(0,0,1920,1080); 

QGraphicsVideoItem *item1 = new QGraphicsVideoItem; 
QMediaPlayer * player1 = new QMediaPlayer; 
player1->setVideoOutput(item1); 
player1->setMedia(QUrl::fromLocalFile("C:/Users/Public/Videos/Sample Videos/1.wmv")); 
player1->setVolume(0); 
scene.addItem(item1); 
item1->setPos(0,100); 

QGraphicsVideoItem *item2 = new QGraphicsVideoItem; 
QMediaPlayer * player2 = new QMediaPlayer; 
player2->setVideoOutput(item2); 
player2->setMedia(QUrl::fromLocalFile("C:/Users/Public/Videos/Sample Videos/2.wmv")); 
player2->setVolume(0); 
scene.addItem(item2); 
item1->setPos(500,500); 

QGraphicsView view; 
view.setScene(&scene); 
view.scale(0.3,0.3); 
view.show(); 
player1->play(); 
player2->play(); 


return a.exec(); 
} 
+0

該代碼在我的情況下工作。我在Debian Jessie中使用Qt 5.7。 – Tarod

回答

0

我可以建議你可以顯示的QGraphicsView視頻的方式。

QMediaPlayer *player1 = new QMediaPlayer(this); 
QVideoWidget *video1 = new QVideoWidget(this); 
QGraphicsVideoItem *item1 = new QGraphicsVideoItem; 
QGraphicsView *view = new QGraphicsView(this); 

player1->setVideoOutput(item1); 
player1->setMedia(QUrl::fromLocalFile("C:/Users/Public/Videos/Sample Videos/1.wmv")); 

player1->play(); 

view->setViewport(video1); 
player1->setVideoOutput(video1); 

view->show(); 
相關問題