QT之QMediaPlayer使用播放音频

简介

使用QMediaPlayer播放MP3格式音乐。

播放相关状态流程简述

操作m_pMediaPlayer->setMedia(); (初始化加载,为play())
状态:
__onMediaChanged QUrl(“qrc:/sounds/Sounds/Big.mp3”)
__onMediaStatusChanged QMediaPlayer::LoadingMedia
__onMediaStatusChanged QMediaPlayer::LoadedMedia

操作m_pMediaPlayer->play();
状态:
播放 __onMediaStatusChanged :QMediaPlayer::BufferedMedia
__onStateChanged :QMediaPlayer::PlayingStat

播完 __onMediaStatusChanged :QMediaPlayer::EndOfMedia
__onStateChanged :QMediaPlayer::StoppedState

操作m_pMediaPlayer->setMedia(); (已经开始play()) 会将播放器关闭,加载外后不会自动开启播放器
状态:
__onStateChanged :QMediaPlayer::StoppedState mediaState QMediaPlayer::BufferedMedia // 先暂停
__onMediaChanged QUrl(“qrc:/sounds/Sounds/HeartAlarmVoice.mp3”)
__onMediaStatusChanged :QMediaPlayer::LoadingMedia
__onMediaStatusChanged :QMediaPlayer::LoadedMedia

相关代码

QT       += core gui multimediawidgets

相关头文件

#include <QMediaPlayer>

播放类实例化

QMediaPlayer *m_pMediaPlayer;
m_pMediaPlayer = new QMediaPlayer();

播放相关

设置播放音乐

m_pMediaPlayer->setMedia(QUrl("qrc:/sounds/sample3s.mp3"));

设置音量

从0(静音)到100(全音量)。默认为100

m_pMediaPlayer->setVolume(nVolume);

播放或恢复播放当前源

m_pMediaPlayer->play();

暂停播放当前源

m_pMediaPlayer->pause()   

停止

m_pMediaPlayer->stop();

其它接口如下

设置静音

void setMuted(bool muted)

设置倍速播放

void setPlaybackRate(qreal rate)

设置播放列表

void setPlaylist(QMediaPlaylist *playlist)

设置播放位置

以媒体开始后的毫秒数为单位。 位置的周期性变化将用信号positionChanged()表示,更新间隔可以用QMediaObject的方法setNotifyInterval()设置。

void setPosition(qint64 position)

播放状态获取

建立状态改变捕获机制

connect(m_pMediaPlayer,&QMediaPlayer::stateChanged,this,&SoundPlayer::stateChanged);

槽函数

void SoundPlayer::stateChanged(QMediaPlayer::State state)
{
    // 播完 
    if(state == QMediaPlayer::StoppedState)
    {
        //TODO
    }
}

效果如下
在这里插入图片描述

播放多首音乐

QT      +=multimedia
QT +=multimediawidgets

头文件

#include <QMediaPlayer>
#include <QMediaPlaylist>

在这里插入图片描述

使用示例

QMediaPlayer  *music = new QMediaPlayer(this);//初始化音乐
 
QMediaPlaylist *playlist = new QMediaPlaylist(this);//初始化播放列表
 
playlist->setPlaybackMode(QMediaPlaylist::Loop);//设置播放模式(顺序播放,单曲循环,随机播放等)
 
playlist->addMedia(QUrl::fromLocalFile("D:/xx/yy/mm.mp3"));//添加歌曲,这里添加的是歌曲的路径
 
playlist->addMedia(QUrl::fromLocalFile("D:/xx/yy/mm2.mp3"));//添加歌曲,这里添加的是歌曲的路径
 
music->setPlaylist(playlist);  //设置播放列表
music->play();//播放歌曲

附上QMediaPlaylist常见用法
激活媒体内容从播放列表位置播放列表位置。

playlist->setCurrentIndex(1);

指定位置的插入方法

playlist->insertMedia(2,QMediaContent(QUrl::fromLocalFile("D:/xx/yy/mm3.mp3")));

精确地删除媒体方法

playlist->removeMedia(3);//删除位置索引为3的媒体对象
playlist->removeMedia(0,2);//删除位置索引为0,1,2的媒体对象;
playlist->clear();//清空列表

参考下面文章做了一些调整
https://blog.csdn.net/gcs_huishao/article/details/123874496?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169012006416800186533266%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=169012006416800186533266&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-2-123874496-null-null.142v90control_2,239v3insert_chatgpt&utm_term=QMediaPlayer&spm=1018.2226.3001.4187

https://blog.csdn.net/qq_39838607/article/details/116885402?ops_request_misc=&request_id=&biz_id=102&utm_term=QMediaPlayer%20%E6%92%AD%E6%94%BE%E9%9F%B3%E4%B9%90%E9%9F%B3%E9%87%8F%E6%9C%80%E5%A4%A7%E5%80%BC&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-116885402.142v91control_2,239v3insert_chatgpt&spm=1018.2226.3001.4187

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路过的小熊~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值