打包好的Music_shell项目: 打包好的Music_shell项目,https://gitee.com/zhu-chaochao/music_shell

目录

碎碎念:

目标&初衷:

现实:

项目设计介绍:

设计布局界面内容:

歌曲管理:

播放控制:

持久化操作:

后续扩展:

碎碎念:

目标&初衷:

music_shell这个项目的创建初衷是为了练习qt,c++能力的同时尝试解决下面这样的问题例如:

        1.一组想听的歌,它的版权在不同的音乐平台,需要你在不同的音乐平台手动的来回切换去播放它们;

        2.有些歌曲它不在音乐软件里有,而在视频网站,比如一些鬼畜作品,一些好听的翻唱歌曲,如何把它们(这些不同平台的歌/视频)去整合起来做成一个队列(歌单),去播放它们。

music_shell这个项目就是想解决这样的痛点,

现实:

        1.这种烂大街想法果不其然,已经有很多人在很早的时就实现了,搜完后简直要吐槽都被做烂了,

        2.由于各种原因,没有时间精力去打入那些项目里去学习学习,去差异化竞争(虽然这种动蛋糕的项目根本做大不了)

        3.甚至光是学qt和做一个基础的本地音乐播放客户端已经耗尽了不少的时间,所以这个music_shell项目现在还是个只能播放本地音乐的音乐播放器


项目设计介绍:

分别从 界面部分 歌曲管理 播放控制 持久化操作 四个板块来介绍

设计布局界面内容:

        qt creater的默认内置空间不能满足对界面设计的需求,需要手动采用Qt designer进行空间设计,依据想要的展示效果,去分析设计。

具体方法:1.先用内置控件widget替代设计大的框架,然后设计需求自定义的控件去提升替换,新设计的控件是有它对应的.ui文件 .cpp文件 和.h文件的,以class的形式展示在.cpp和.h文件里,可以去设计对应的信号及槽函数,去实现复杂的效果

        2.界面设计还可以通过QSS和一些简单的动画去发挥想象力设计界面,

本music_shell项目就用到了自定义控件BtFrom RecBox RecBoxItem CommonPage ListItemBox MusicSlider VolumeTool等

歌曲管理:

        1.对歌曲文件进行解析,解析的信息数据存到Music类中,(歌曲文件本身还是存在本地磁盘/服务器里)

        2.让自定义控件去展示上面解析的格局信息数据,去达到下图效果

        3.收藏,历史播放,本地音乐的实时更新展示

播放控制:

        1.对Qt提供的QMediaPlayer类和QmediaPlaylist类的封装使用(这块儿可以加介绍)

        2.对界面控制音乐播放相关的按钮的信号和播放控制槽函数的关联

        3.播放过程的数据同步,界面更新显示

持久化操作:

        保存加载过的歌曲,歌曲信息,收藏/历史播放信息,以便再次启动不用手动配置

        本项目使用的是SQLite数据库,

SQLite选择原因:

        1.SQLite是一款轻量级、无需安装的桌面型数据库将源文件添加到工程就可以直接使用

        2.管理简单,易于维护,甚至可以认为无需管理。

        3.操作方便,SQLite生成的数据库文件可以在各个平台无缝移植。

        4.可以非常方便的以多种形式嵌入到其他应用程序中,如静态库、动态库等。

        5.Qt中已经内置了SQLite,在安装qt开发环境时,SQLite环境已经配置好了,用户在.pro文件中导入数 据库模块就可以使用

后续扩展:

        1.支持向服务器搜索,(打算用自己写的仿muduo库HttpServer作为存放歌曲的服务器)

        2.支持多种音视频混合的来源的歌单的创建,加载,播放,传播(如一个歌单里面有B站的视频,QQ音乐版权的歌曲,网易音乐版权的歌曲,本地的歌曲,抖音的视频,即music_shell项目想实现的初衷)

        3.学习LX music,listen1,等开源项目的做法,参考优化项目,找出更多需要的扩展模块

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐