8

以麒麟音乐为例,教你如何构建专属自己的音乐播放器

 2 years ago
source link: https://www.ubuntukylin.com/news/1706-cn.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

以麒麟音乐为例,教你如何构建专属自己的音乐播放器

发布时间:2021-11-10 15:03:59 点击次数:16

麒麟音乐是一款设计美观、功能简洁、支持多种音乐格式的音乐播放器。在播放本地音乐的同时,还可以根据用户喜好、自定义歌单来对音乐进行分组。除常规模式外,麒麟音乐还有小窗口模式来满足用户的不同需求。想知道麒麟音乐有哪些功能?

麒麟音乐是一款设计美观、功能简洁、支持多种音乐格式的音乐播放器。在播放本地音乐的同时,还可以根据用户喜好、自定义歌单来对音乐进行分组。

除常规模式外,麒麟音乐还有小窗口模式来满足用户的不同需求。想知道麒麟音乐有哪些功能?小优这就带你了解,一款友好易用的音乐播放器是如何打造的。

优麒麟(Ubuntu Kylin)

图1 麒麟音乐首页

麒麟音乐主要功能及实现:

01  歌单功能

默认歌单为我喜欢歌单,点击收藏按钮或者右键选择“添加到我喜欢”来将歌曲添加到默认歌单中。点击添加歌单图标可以创建自定义歌单并对自定义歌单进行命名。

在歌单列表区域点击鼠标右键,可以进行歌单播放、歌单重命名、删除歌单等操作。

优麒麟(Ubuntu Kylin)

图2 麒麟音乐歌单列表

02  播放功能

播放/暂停:点击切换当前歌曲的暂停/播放状态。

上一首:播放当前列表当前播放顺序的上一首歌曲。

下一首:播放当前列表当前播放顺序的下一首歌曲。

音量:调整当前播放的音量。

收藏:可以添加/删除歌曲到“我喜欢”的列表。

播放顺序:支持列表循环、单曲循环、随机播放三种模式。

播放列表:历史播放列表显示播放历史。

03  使用相关库解析音频文件

对于一个音乐播放器来说,对音频文件进行解析,从而获得音频文件中包含的歌曲名、歌手、专辑名等种种信息,是非常重要的一步。麒麟音乐针对不同格式的音频文件及不同类型的信息,使用 Taglib、FFmpeg 等多个第三方库进行解析,避免了单一库支持的格式不全以及部分信息解析不全的问题。歌曲信息解析完成后,会自动保存在数据库中,方便歌单等模块调用歌曲信息。

04  使用MPV播放音频文件

麒麟音乐使用 mpv 播放音频文件,支持大多数常见音频格式。详见以下列表:

优麒麟(Ubuntu Kylin)

图3 麒麟音乐支持的音频格式

除了正常播放歌曲外,还可以对歌曲进行跳转播放,拖动进度条即可改变歌曲进度。

05  使用数据库保存歌单及歌曲列表

麒麟音乐使用 SQLite 数据库来保存歌单及歌曲信息,SQLite 是一款开源轻量级的数据库软件,不需要 server,可以集成在其他软件中,非常适合嵌入式系统。

Qt5以上版本可以直接使用 SQLite。使用数据库模块时,必须要在项目的 pro 文件中添加:

QT += sql

在需要使用 SQL 的类定义中,引用相关头文件。例如:

#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>

QSqlDatabase 类提供了一个接口,用于通过连接访问数据。QSqlDatabase 的一个实例表示连接。通过驱动程序 QSQLITE 类型和连接名称 connectionName 提供对数据库的连接及访问,该驱动程序派生自 QSqlDriver。

QSqlQuery 类通过 exec() 成员函数来执行 DML(数据操作语言)语句,如 SELECT、INSERT、UPDATE 和 DELETE,以及 DDL(数据定义语言)语句等。

QSqlQuery 类在发生错误时,提供了错误的相关信息。包括驱动信息 driverText(),数据库信息 databaseText(),或者它们的综合(text()方法获取),也提供了 number()和 type()函数,用于显示错误数量与类别。错误可以通过 QSqlDatabase::lastError()、QSqlQuery::lastError()、模型的 lastError()函数三种方式获取。

在增删歌曲或增删歌单时,都是通过对数据库进行操作,然后反映到前端,前端与数据库的分离,避免了很多异常错误情况。

06  使用Model/View 实现歌单及歌曲列表的显示

麒麟音乐使用 Model/View 实现歌单及歌曲列表页面的显示。所以只需要关注更新 model 的部分,而不需要关心 view 该如何变化,因为当 model 改变了,所有关联它的 view 都会得到相应的更新。

在传统的 Widgets 应用程序中,Qt 并没有将数据和窗口分开,显然这样的工作就留给了用户。而 Qt 的 MVC 框架则是将界面与数据进行了隔离,View(视图)负责展示数据,Model(模型)负责管理数据,Delegate(委托)负责 View 和 Model 的交互。

优麒麟(Ubuntu Kylin)

图4 麒麟音乐歌曲列表页面

07  播放历史功能实现

麒麟音乐通过播放历史保存用户的播放记录,播放历史中的歌曲也可以随时点击进行播放。

歌单或歌曲列表中的歌曲播放时,会自动加入播放历史,播放历史自身的歌曲播放时不会加入。

优麒麟(Ubuntu Kylin)

图5 麒麟音乐播放历史页面

08  精简模式

点击标题栏中 mini 模式图标可以进入 mini 窗口模式。mini 窗口默认左侧显示正在播放的歌曲名、专辑封面以及时间模块,右侧为收藏、播放顺序图标。

当鼠标悬浮到 mini 窗口时,歌曲名和时间会隐藏,此时显示上一首、播放/暂停、下一首、最大化和关闭图标。

优麒麟(Ubuntu Kylin)

图6 麒麟音乐 mini 模式窗口

以上就是对麒麟音乐的一些介绍,想了解有关麒麟音乐更多内容或者有什么好的建议和想法,都可以来 GitHub 跟优麒麟的开发者们一起交流哦,直达链接:

https://github.com/UbuntuKylin/kylin-music 


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK