2014-10-07 103 views
2

我正在嘗試使用QMedia播放器播放視頻文件。這是我的代碼。它會彈出一個新窗口,但該文件無法播放。可變視頻是一個QString,它保存文件的相對路徑,在這種情況下,它將是「videos/wildlife.wmv」。我究竟做錯了什麼?試圖播放視頻

QMediaPlayer* player = new QMediaPlayer(this); 
    QMediaPlaylist* list = new QMediaPlaylist(); 
    QVideoWidget *vw = new QVideoWidget(); 
    list->addMedia(QUrl::fromLocalFile(video)); 
    player->setVolume(100); 
    player->setPlaylist(list); 
    player->setVideoOutput(vw); 
    vw->show(); 
    list->setCurrentIndex(0); 
    player->play(); 

我注意到在應用程序輸出窗口,我得到這個消息如下: setGeometry:無法設置幾何爲0x0 + 480 + 190上QWidgetWindow/'QVideoWidgetClassWindow'。生成的幾何體:116x0 + 480 + 190(幀:8,30,8,8,自定義邊距:0,0,0,0,最小尺寸:0x0,最大尺寸:16777215x16777215)。

謝謝。 熊

回答

1

這種錯誤可能是由錯誤的道路造成的到文件(當你的文件沒有加載,那麼播放器沒有任何顯示)。例如,當您將未出現的像素圖設置爲標籤時,您將得到相同的錯誤。

嘗試:

集滿到您的文件和支票路徑是再正常不過了。

使用QFile::exists()來確保您的文件(相對路徑)存在。

當我在我的電腦(MOV文件格式)上試過你的代碼時,我得到了同樣的錯誤,我沒有看到視頻,但是我聽到了聲音。我是如何將它固定在我的電腦上的?嘗試至少下一個,也許它有幫助:

我以編程方式調整QVideoWidget的大小。例如:

//your code 
player->setVideoOutput(vw); 
vw->show(); 
vw->resize(1000,600);//Add this line 
list->setCurrentIndex(0); 
player->play(); 
+0

我試圖用相同的結果設置完整路徑。我做了相對路徑檢查,它確實存在。 – Bear35645 2014-10-07 20:47:32

+0

@ Bear35645請看我的編輯。我在我的電腦上試過你的代碼,也許找到了解決辦法。你現在可以看視頻嗎? – Chernobyl 2014-10-08 15:53:23

+0

@Chernobly謝謝。這工作。 – Bear35645 2014-10-08 16:07:58

2

您需要分配播放列表播放器:

player->setPlaylist(list); 

而且從列表中的起點開始:

list->setCurrentIndex(0); 
+0

我也試過這個,結果也一樣。 – Bear35645 2014-10-07 20:47:58

+0

@ Bear35645,我已經更新了我的答案。 – 2014-10-07 21:24:53

+0

謝謝。我進行了您建議的更改並更新了我的原始帖子以匹配我當前的代碼。不幸的是我仍然得到相同的結果。 – Bear35645 2014-10-07 21:34:05