環境:
QT版本:5.6.2
開發環境:VS2013
系統版本:windows 7 64bit
前言
我們需要用QT播放視頻,如制作一個視頻播放器等。
1.代碼實現
1.1 pro添加
QT += multimedia multimediawidgets
1.2 頭文件添加
1 //要包含下面的兩個文件,必須在.pro文件中添加 QT += multimedia multimediawidgets
2 #include <QMediaPlayer>
3 #include <QVideoWidget>
4 #include <QMediaPlaylist>
1.3 代碼實現
1 QWidget *widget = new QWidget; 2 QVBoxLayout *layout = new QVBoxLayout; 3
4 QMediaPlayer* player = new QMediaPlayer; 5 QVideoWidget* videoWidget = new QVideoWidget; 6 QMediaPlaylist* playlist=new QMediaPlaylist; 7
8 videoWidget->setAspectRatioMode(Qt::IgnoreAspectRatio); 9 videoWidget->setFullScreen(true); 10
11 layout->addWidget(videoWidget); 12 widget->setLayout(layout); 13
14 playlist->clear(); 15 playlist->addMedia(QUrl::fromLocalFile("C:\\a.mp4")); 16 player->setPlaylist(playlist); 17
18 QFile file("C:\\a.mp4"); 19 if(!file.open(QIODevice::ReadOnly)) 20 qDebug() << "Could not open file"; 21
22 player->setVideoOutput(videoWidget); 23 player->setPlaylist(playlist); 24
25 widget->showFullScreen(); 26 player->play();
2.效果
3.注意事項
3.1 部署
在其他電腦上部署的時候需要注意包含
a.mediaservice plugin
b.QT5MULTIMEDIA.DLL
QT5NETWORK.DLL
QT5GUI.DLL
QT5CORE.DLL
c.QT5MULTIMEDIAWIDGETS.DLL
QT5MULTIMEDIA.DLL
QT5WIDGETS.DLL
QT5GUI.DLL
QT5CORE.DLL
QT5OPENGL.DLL
3.2 播放無圖像
播放無圖像,並報錯:
DirectShowPlayerService::doRender: Unresolved error code 80040266
原因:
Qt 中的多媒體播放,底層是使用DirectShowPlayerService,所以安裝一個DirectShow解碼器,例如LAV Filters,就可以解決運行出錯問題