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 *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 
#include 

在这里插入图片描述

使用示例

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部