qt phonon 制作音乐播放器学习(怎样让播放进度条和音乐播放时长同步)
2017-02-23 19:18
495 查看
在播放媒体文件时,媒体对象MediaObject 会在指定的时间间隔发射tick(qint64 time)信号, 这个时间间隔可以使用setTickInterval()来进行设置,tick()中的time参数指定了媒体对象在媒体流中的当前位置,单位是毫秒。实现代码如下:构造函数中:
// 创建媒体图
mediaObject = new Phonon::MediaObject(this);
Phonon::AudioOutput *audioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
Phonon::createPath(mediaObject, audioOutput);
// 关联媒体对象的tick()信号来更新播放时间的显示
connect(mediaObject, SIGNAL(tick(qint64)), this, SLOT(updateTime(qint64)));
// 创建控制播放进度的滑块
Phonon::SeekSlider *seekSlider = new Phonon::SeekSlider(mediaObject, this);
// 显示播放时间的标签
timeLabel = new QLabel(tr("00:00 / 00:00"), this);
timeLabel->setToolTip(tr("当前时间 / 总时间"));
timeLabel->setAlignment(Qt::AlignCenter);
timeLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
mediaObject->setCurrentSource(Phonon::MediaSource("../myPlayer/music.mp3"));
// 更新timeLabel标签显示的播放时间
void MyWidget::updateTime(qint64 time)
{
qint64 totalTimeValue = mediaObject->totalTime();
QTime totalTime(0, (totalTimeValue / 60000) % 60, (totalTimeValue / 1000) % 60);
QTime currentTime(0, (time / 60000) % 60, (time / 1000) % 60);
QString str = currentTime.toString("mm:ss") + " / " + totalTime.toString("mm:ss");
timeLabel->setText(str);
}
相关文章推荐
- 使用AndriodStudio制作音乐播放器之音乐播放界面(进度条正常播放、上、下曲切换)
- 用Java写LRC制作器,实现音乐播放和滑块条进度同步
- android学习之利用MediaPlayer制作音乐播放器
- 安卓学习笔记---实现简易播放器(带有进度条,开始与结束时间,暂停与播放)
- 使用AndriodStudio制作音乐播放器之音乐播放界面(旋转动画、正在播放的提示红条)
- JavaScript制作音乐播放器
- 【android学习之十四】——多媒体1:音乐播放
- adb 命令打开音乐播放器,并播放音乐
- 基于android的网络音乐播放器-回调实现音乐播放及音乐收藏的实现(三)
- Flash/Flex学习笔记(32):播放音乐并同步显示lyc歌词(适用于Silverlight)
- Unity中实现在切换场景时控制音乐的同步播放
- 在线播放器怎么播放音乐时先播指定的音乐呀 比较自己网址的广告
- 运用iOS教你轻松制作音乐播放器
- 播放器 9.0以前的视屏播放 AVFoundation音乐播放 AudioToolbox音效播放
- Android多媒体学习四:调用Android自带的播放器播放Audio
- 基于android的网络音乐播放器-播放控制界面(九)
- 手持设备:懒人的互联网音乐智能同步/播放器
- Android开发学习之录音同步播放的实现
- Android播放器推荐:可以播放本地音乐、视频、在线播放音乐、视频、网络收音机等
- 如何使用AndriodStudio制作音乐播放器音乐列表界面和导入手机音乐资源