标题:linux的mplayer的Qt界面化音乐播放器
作者:tech_cat
日期:2023-09-17 00:42
内容:
各位看官,本人 不吃鱼刺的科技猫(tech_cat)熬个夜把之前的写的小项目拿了出来复习了一番,之前花了一段时间写了一个基于linux的mplayer的Qt界面化音乐播放器。就在QT社区共享一下,与诸位大佬讨论一下技术,在这也感谢 QTCN 平台。文中哪里写的不对和不好,尽管赐教, tech_act 大恩不言谢。本次调试并解决大部分bug:歌词和歌曲不同步点击pause 按钮再点击下一首歌曲出现程序异常在歌曲暂时的时候拖动音量条,歌曲时间进度不动音量一开始为0,但是也有声音播放按下pause按钮定时器不停止等等诸多问题下面为大家简单介绍一个所用原理和主要代码也给大家附上(本人没想到字数才5000,只能附上这些代码了,有需要的话可以交流)。首先,本次的基本播放器小项目所用详细原理如下:在QT 中创建父子进程,子进程 execlp 调用 linux 下的 mplayer 可执行程序,父进程通过创建的 有名管道用于向 mplayer 的slave模式(注:slave 模式用于用户开发mplayer模式)下写入命令,使播放器实现想要的功能,如seekvalue 、 get_time_length等等。通过无名管道来获取子进程 mplayer 在 stdout 流中的数据情况,以便调试相应功能。一开始本来想直接用文件 IO 来遍历文件获取歌单,想了一下还是用 标准 IO 兼容一些,文件不大,速率影响也不大;获取的歌单用 vector 进行动态存储,再通过 Qpushbutton 来触发信号 来连接槽函数,槽函数中用来 vector 的 iterator 来获取上下歌曲名; (注:若歌曲少的话,建议可以使用数组来存储,毕竟数组访问元素速度最快嘛)再通过歌曲信息来进行对歌词解析存储,本次采用vector 存储 class 类型,class 类中用有歌曲时间和歌词两个成员。本想用 链表进行存储的 但感觉会代码很乱, 各位看官怎么看?最后就是一些小细节问题了,歌词显示用了Qlistwdight 控件等等。然后呢,就是项目功能:
可以动态显示当前歌曲的歌名、作曲者、专辑歌词信息歌词显示可以随进度变化而变化,使所唱的歌词实时显示可以点击上一曲和下一曲以及暂停[/li ..