qmediaplayer获取流类型_Qt使用QMediaplayer类做音频播放器 - 博客频道 - CSDN.NET

本文介绍了如何使用Qt的QMediaPlayer类创建一个简单的音频播放器,包括添加音频文件到播放列表、实现播放、暂停、快进、切换歌曲等功能。通过QMediaPlaylist进行循环播放设置,并通过QFileDialog选择MP3和WMV文件。此外,还涉及了QMediaPlayer的state()方法用于切换播放和暂停状态。
摘要由CSDN通过智能技术生成

Delphi 音乐播放器,支持桌面歌词、换肤、换颜色、歌词自动下载,Win7下支持小窗口预览,有些功能未完全完成,就如调整音量(懒得搞,但是可以听了,只写了一次性播放列表没得循环的)。支持酷狗、QQ的动感歌词,以动感方式显示自己的实现方法,工程

刚刚看了下,已经有一个月没有写博客了,今天没事,用Qt做了一个很小的音频播放器。实现了基本功能,界面没有美化,难看的我都有点不忍心了。言归正传,说说体会和具体实现吧。

在Qt4的时候,Qt集成了一种作为音频方面的模块-phonon,而在Qt5实现后,Qt将phonon删除了,同时,又有了Qmediaplayer类来实现音频的播放。

1、定义两个类的指针,QMediaplayer和QMediaplayList指针,并将列表播放的模式设置为基本的循环模式。

playList=new QMediaPlaylist;

playList->setPlaybackMode(QMediaPlaylist::Loop);

player=new QMediaPlayer;

player->setPlaylist(playList);

2、打开文件,并将音频文件添加到播放列表里面

QString initialName=QDir::homePath();

QStringList pathList=QFileDialog::getOpenFileNames(this, tr("选择文件"), initialName, tr("*.mp3","*wmv"));

for(int i=0; i

{

QString path=QDir::toNativeSeparators(pathList.at(i));

if(!path.isEmpty())

{

playList->addMedia(QUrl::fromLocalFile(path));

QString fileName=path.split("\\").last();

ui->listWidget->addItem(fileName);

}

}

3、双击列表时可以播放

ui->label->setText( ui->listWidget->currentItem()->text() );

qDebug()<listWidget->currentIndex().row();

playList->setCurrentIndex( ui->listWidget->currentIndex().row() );

player->play();

ui->btn_start->setText(tr("PASUE") );

4、快进、和歌曲长度前言:在上文iOS录音实践中我们用到了AVAudioPlayer来播放本地音频文件。可是在实际应用中我们需要播放网络音频文件,那么在iOS中如何播放网络流媒体呢?就是使用AudioToolbox框架中的音频队列服务Audio Queue Services。本文将介绍第三方优秀开源框架FreeStr

//调节快进后,音乐播放也快进

void m_player::slot_setPosition(int value)

{

player->setPosition(value);

}

//调节快进

void m_player::slot_positionChanged(qint64 position)

{

ui->horizontalSlider->setValue(position);

}

//获取歌曲的长度,并设置长度

void m_player::slot_durationChanged(qint64 duration)

{

ui->horizontalSlider->setRange(0,duration);

}

5、播放和暂停

switch (player->state())

{

case QMediaPlayer::PlayingState:

player->pause();

break;

default:

player->play();

break;

}

6、创建右键菜单,可以选择播放模式

m_pContextMenu = new QAction(this);

m_pContextMenu->setSeparator(true);

addAction( ui->m_pActionCurrentItemInLoop);

addAction(ui->m_pActionLoop);

addAction(ui->m_pActionRandom);

addAction(ui->m_pActionSequential);

setContextMenuPolicy(Qt::ActionsContextMenu);

7、播放上一首和下一首

void m_player::on_btn_last_clicked()

{

int currentIndex=playList->currentIndex();

if(--currentIndex<0) currentIndex=0;

playList->setCurrentIndex(currentIndex);

player->play();

}

void m_player::on_btn_next_clicked()

{

int currentIndex=playList->currentIndex();

if(++currentIndex==playList->mediaCount()) currentIndex=0;

playList->setCurrentIndex(currentIndex);

player->play();

}

8、切歌后显示也要变化

QListWidgetItem *item = ui->listWidget->item(value);

item->setSelected(true);

ui->label->setText(item->text());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值