二.Qt的音频
1.madplay
madplay是一个开源的音频播放器,可以播放各种音乐格式的音频文件。
Ubuntu中madplay的安装命令:
sudo apt-get update
sudo apt-get install madplay
madplay 音频文件路径
设置音量:-a -175 ~ +18(播放时按+/-调节)
显示播放的时间:-v
循环播放:-r
传入多个音频文件:
随机播放:-z
上一首/下一首:b/f
练习:
实现开发板和Ubuntu上音乐的播放
虚拟机网络配置:
1.设置为NAT共享模式
2.设置IP获取方式为自动
控制madplay播放命令
开始:
madplay 音频文件路径 &
停止:
killall -KILL madplay &
暂停:
killall -STOP madplay &
继续:
killall -CONT madplay &
2.Qt中如何控制音频播放
(1)在Qt程序中启动进程(QProcess)播放madplay
成员函数:
start -------- 启动
kill --------- 停止
waitForFinished ---------- 等待结束
state -------- 状态
excute(命令,参数); -------- 停止进程执行的内容等待执行完指定程序后继续执行原内容
练习:
实现Qt madplay的上一首和双击播放的功能
双击listWIdget信号 -------- itemDoubleClicked
3.Qt中的对媒体模块(开发板上没有)
(1)简介
QMediaPlayer是Qt预定义的播放多媒体文件的类,可以播放各类音视频文件,比如mp3,mp4,avi,WAV......,既可以播放单个文件,也可以和QMediaPlayerlist(播放列表)相结合,对一个播放列表进行播放。
多媒体相关的类属于多媒体模块,使用时需要在项目文件中手动添加,开发板没有该模块。
QT += multimedia
(2)QMediaPlayer类的介绍
1)设置播放的媒体/播放列表
//设置播放的媒体
[slot] void QMediaPlayer::setMedia(const QMediaContent &media, QIODevice *stream = nullptr);
//设置播放列表
void setPlaylist(QMediaPlaylist *playlist);
//播放列表需要设置播放模式,使用播放列表的成员函数设置
void setPlaybackMode(QMediaPlaylist::PlaybackMode mode);
2)播放,停止,暂停
play() ------- 播放
stop() ------- 停止
pause() ------ 暂停
练习:
完成下一首的功能
3)获取当前播放的媒体,设置音量,设置进度
//当前播放媒体
QMediaContent currentMedia() const;
//设置音量
void setVolume(int volume);
//设置进度
void setPosition(qint64 position);
信号:
1)状态改变
[signal] void QMediaPlayer::stateChanged(QMediaPlayer::State state);
2)播放媒体改变
[signal] void QMediaPlayer::currentMediaChanged(const QMediaContent &media);
3)播放周期(总长度)改变
[signal] void QMediaPlayer::durationChanged(qint64 duration);
4)播放进度改变
[signal] void QMediaPlayer::positionChanged(qint64 position);
(3)QMediaPlaylist介绍
成员函数:
1.添加媒体
bool QMediaPlaylist::addMedia(const QMediaContent &content);
2.删除媒体
bool QMediaPlaylist::removeMedia(int pos);
3.清空媒体
bool QMediaPlaylist::clear();
4.设置当前媒体
[slot] void QMediaPlaylist::setCurrentIndex(int playlistPosition);
作业:
1.完成音乐播放时显示当前播放时间
附加:2.将周期和进度显示为 mm:ss 的格式