QT音乐播放问题QMedia的使用

62 篇文章 104 订阅

最近想做一个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

  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值