2014-01-30 118 views
0

我一直試圖在Qt5.2中用QMediaPlayer和QVideoWidget播放視頻格式* .wmv,* .mp4。我只是遵循expample,這裏是我的代碼:使用QMediaPlayer,Qt5.2中的QVideoWidget播放視頻

mp =new QMediaPlayer(this); 
vw = new QVideoWidget(this); 
QMediaPlaylist* playlist = new QMediaPlaylist(this); 
playlist->addMedia(QUrl::fromLocalFile("C:/Users/Public/Videos/Sample Videos/Wildlife.wmv")); 
playlist->setCurrentIndex(1); 
mp->setPlaylist(playlist); 
mp->setVideoOutput(vw); 
setGeometry(100,100,400,500); 
vw->setGeometry(0,0,300,400); 
show(); 
play(); 

我已經安裝了K-Lite編解碼器。當我使用Media Player Classic或Win Media Player播放相同的文件時,文件播放良好,Lca和FFmpeg圖標顯示在紙盒中。

但是在Qt 5.2中,我無法看到任何視頻文件。只有wmv文件,我才能聽到音頻(不可見)。

我在網上搜索了很多,每個人都指向我認爲我有的編解碼器。 K-Lite編解碼器的配置是否重要?我使用了默認的編解碼器。我也用Win媒體基礎搭建了Qt。所以我不知道這裏出了什麼問題。平臺是win7 32. 任何幫助表示讚賞。如果我必須閱讀任何文章或任何文章或博客,請告訴我。謝謝。

+0

我將視頻卡更換爲支持OpenGL 3.3的Nvidia GeForce 210。我以前的只支持OpenGl 1.1。現在我可以正常播放所有wmv視頻,但對於任何其他格式,我收到以下錯誤:DirectShowPlayerService :: doRender:未解決的錯誤代碼80040266. VFW_E_NO_TRANSPORT由於不支持相同的傳輸,因此引腳無法連接。 例如,上游過濾器可能需要IAsyncReader接口,而下游過濾器需要IMemInputPin。更換視頻卡之後,我是否必須構建directshow或Qt5? – sky

回答

0

這是視頻卡。它需要支持OpenGL 2.1或更高版本的顯卡。一旦我將顯卡升級到支持OpenGL 3.3的GeForce 210並安裝了默認的K-Lite編解碼器,我就可以播放所有視頻和音頻。