嵌入式liunx平台,通过QT&QML利用mplayer取得音频文件播放的总时间、当前播放时间、播放百分比、专辑名、艺术家名、标题以及年份等 ID3 信息。
原理:
利用QT的“QProcess”建立进程,通过QProcess的“start”方法,启动线程,调用“mplayer”命令播放音频文件,在mplayer的“slave”模式下,通过QProcess的write方法向进程中写入“mplayer”命令,发送需要取得的音频文件的数据,通过“readLine”方法,从进程中取得已经写入的播放文件相关信息。
实现步骤:
以取得当前播放时间和艺术家名(歌手名)为例进行说明,其他信息取得大同小异,请参考备注内容。
一、建立新进程,用来接收mplayer命令传递过来的文件信息
QProcess * mplayerProcess;
mplayerProcess = new QProcess(this);
mplayerProcess->setProcessChannelMode(QProcess::MergedChannels);
说明:
“setProcessChannelMode”的模式设置为“MergedChannels”,QT官网解释如下:
qprocess将正在运行的进程的输出合并到标准输出通道(stdout)中,标准错误通道(stderr)将不接收任何数据。
二、播放一个音频文件,并建立一个信号和槽函数
mplayerProcess->start("mplayer -slave -quiet /home/m_e1.mp3");
connect(mplayerProcess,SIGNAL(readyReadStandardOutput()),this,SLOT(catchOutput()));

这篇博客介绍了如何在嵌入式Linux平台使用QT&QML结合mplayer,通过QProcess创建进程和奴隶模式,获取音频文件的ID3信息,如播放时间、艺术家名等。通过向mplayer进程发送特定命令,读取返回的数据来实现信息提取。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



