您的位置:首页 > 编程语言 > Qt开发

QT音乐播放问题QMedia的使用

2018-01-15 19:22 543 查看
最近想做一个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是一个很强大的类不仅可以播放各种音乐,还可以播放视频

aa2e

注:使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: