最近想做一个Linux开发板的QT音乐播放器,准备先在Windows上试试,写了一些代码如下:
注:使用QMediaPlayer需要在项目文件.pro加入QT += multimedia
头文件为默认,cpp文件如下
cpp文件:
#include "widget.h"
#include "ui_widget.h"
#include <QString>
#include <QFileInfo>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
QMediaPlayer *myPlayer= new QMediaPlayer;
myPlayer->setMedia(QUrl::fromLocalFile("E:\QTcode\111.mp3"));
myPlayer->setVolume(80);
myPlayer->play();
}
程序编译运行都没问题,就是声音出不来,百度发现Qt 中的多媒体播放,底层是使用DirectShowPlayerService,需要一个DirectShow解码器,例如LAV Filters
相关帖子:
http://blog.csdn.net/qqwangfan/article/details/52469859
http://blog.csdn.net/z609932088/article/details/51248596
下载LAV Filters地址
http://forum.doom9.org/showthread.php?t=156191 里的
Binaries for the most recent version are available here:
Version 0.68.1: Installer (both x86/x64)【建议直接下载安装包,ZIP的文件我这里安装没有效果】 – Zips: 32-bit & 64-bit
Download 3D Plugin: 32-bit & 64-bit
安装包网盘地址:链接:https://pan.baidu.com/s/1jJFirmm 密码:vmy8
安装之后,提示
DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80004005 ()
按照网上的说法是路径错误,但是!我的文件路径是直接从Windows文件管理器复制过来的,不应该啊!尝试了好几次,仍然不行。突然灵光一闪,把“\”改为“/”,运行,音乐放出来的那一刻,真的是激动了一下。
以后要记住了,QT文件路径用的是“/”,而Windows用的是“\”.
修正后的代码:
.h文件为默认
cpp文件:
#include "widget.h"
#include "ui_widget.h"
#include <QString>
#include <QFileInfo>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
//建立QMediaPlayer 对象
QMediaPlayer *myPlayer= new QMediaPlayer;
//绝对路径
//设置媒体文件源
//myPlayer->setMedia(QUrl::fromLocalFile("E:/QTcode/111.mp3"));
//设置音量
//myPlayer->setVolume(80);
//播放音乐
//myPlayer->play();
//相对路径
//新建文件路径path
QString path=QFileDialog::getOpenFileName(this,tr("选择一首歌曲"),"/","*.mp3");
//新建文件索引
QFileInfo fileInfo=QFileInfo(path);
//读取文件名
QString fileName=fileInfo.baseName();
//在UI上显示文件名
ui->label->setText(fileName);
//设置媒体文件源
myPlayer->setMedia(QUrl::fromLocalFile(path));
//设置音量
myPlayer->setVolume(60);
//播放音乐
myPlayer->play();
}
QMediaPlayer是一个很强大的类不仅可以播放各种音乐,还可以播放视频
注:使用QVideoWidget 需要在项目文件.pro加QT += multimediawidgets
头文件为默认
cpp文件如下:
#include "widget.h"
#include "ui_widget.h"
#include <QLayout>
#include <QVideoWidget>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
//建立布局
QHBoxLayout *m_layout= new QHBoxLayout(this);
//建立QMediaPlayer 对象
QMediaPlayer *m_player = new QMediaPlayer(this);
//设置媒体文件源
m_player->setMedia(QUrl::fromLocalFile(QString::fromLocal8Bit("E:/QTcode/222.mp4")));
//新建QVideoWidget 对象
QVideoWidget *m_videoW = new QVideoWidget(this);
//将QVideoWidget 对象添加到布局
m_layout->addWidget(m_videoW);
//设置页面布局
this->setLayout(m_layout);
//设置媒体文件输出
m_player->setVideoOutput(m_videoW);
//显示m_videoW
m_videoW->show();
//播放视频
m_player->play();
}
这个项目的源码:
http://download.csdn.net/download/qq_40194498/10206873