[填坑]使用Qt5.12播放mp4文件的注意事项

1、配置工作

如果要用multimedia,请首先去安装LAV解码器 http://forum.doom9.org/showthread.php?t=156191 不安装无法使用该模块

#视频播放需要pro文件加入以下模块
QT += multimedia
QT += multimediawidgets
//添加以下头文件
#include 
#include 
#include 
#include 

   若使用ui编程,先拖入一个QWidget,然后将其提升为QVideoWidget (直接在“提升的类名称”处填写,可以自动搜索到对应头文件的)

2、编程填坑

 //MainWindow类中添加成员

QMediaPlayer *pMediaPlayer;
QMediaPlaylist *pMediaPlaylist;

 

 //MainWindow构造函数中添加

ui->widget_video->setAspectRatioMode(Qt::IgnoreAspectRatio); //不可少!!否则可能播放没反应
//ui->widget_video->setFullScreen(true); //不可轻易用,可能导致工具栏菜单栏消失
pMediaPlayer = new QMediaPlayer(this); 
pMediaPlaylist = new QMediaPlaylist(pMediaPlayer);
pMediaPlayer->setVideoOutput(ui->widget_video); //ui->widget_video为刚刚添加并提升的部件

最大的坑是setAspectRatioMode(Qt::IgnoreAspectRatio);     不可少!!否则可能播放没反应

//在控制播放的按钮中添加
pMediaPlaylist->clear();
pMediaPlaylist->addMedia(QUrl::fromLocalFile("D:/a.mp4"));   //注意路径,此为大坑
pMediaPlaylist->addMedia(QUrl::fromLocalFile("F:/123/src/b.mp4"));
pMediaPlaylist->setCurrentIndex(0);
pMediaPlayer->setPlaylist(pMediaPlaylist);
pMediaPlayer->play();

解决方案:

1、QT播放视频没有反应,没有设置setAspectRatioMode(Qt::IgnoreAspectRatio);

2、QT无法播放视频 DirectShowPlayerService错误,需要下载安装 LAV 解码器,

3、QT播放视频提示地址错误 DirectShowPlayerService::doSetUrlSource(class QMutexLocker *)),未填写正确路径,不会写路径的可以跳转到  [填坑]QT中路径如何写 https://blog.csdn.net/qq_20515461/article/details/88092980

你可能感兴趣的:(QT,填坑)