music_shell音乐客户端项目总结
打包好的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,等开源项目的做法,参考优化项目,找出更多需要的扩展模块
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)