总体运行界面如下:


一些关键方法和思路:
(1)导入歌曲:
从本地文件将歌曲名和歌曲的歌词导入,获取文件路径下所有的音乐文件和歌词文件,生成两个QStringList类型的列表。同时将歌名添加到显示歌名的组件上。同时实例化播放器和播放列表,将列表逐项加载到播放列表上,并将播放列表加载到播放器上。
(2)音乐、视频进度条:
设置滑块的长度范围为音乐长0.001倍,如果音乐进度发生改变,则同时改变滑块位置,如果滑块改变位置,则改变音乐进度。同时设置时间,让播放时间等于音乐进度(毫秒)并用Qlabel组件显示。
(3)显示歌词:(个人觉得这是个最难的点,参考了大神的思路,加上自己的思考,搞了好久才搞出来😂)
mp3歌词文件是以lrc为扩展名的文件,属于纯文本格式文件,通过解析mp3纯文本格式的歌词文件(“XXX.lrc”),实现歌词的同步显示。
LRC歌词是一种包含着“[:]”形式的“标签(tag)”、基于纯文本的歌词专用格式。
标签分为“标识标签”和“时间标签”两种,下面①~⑤为“标识标签”,⑥为“时间标签”。
①[ti:曲名]
②[ar:艺人名]
③[al:专辑名]
④[by:编者(指编辑LRC歌词的人)]
⑤[offset:时间补偿值] 其单位是毫秒,正值表示整体提前,负值相反。用于总体调整显示的快慢。
⑥[分:秒.厘秒]歌词内容
中括号里边是歌曲内容显示时的开始时间,“:”前面为分钟,“:”后面为秒,其中“.”前面为秒,“.”后面为厘秒(一秒的百分之一);中括号外边是歌词内容。
读取对应音乐名字的歌词文件,逐行读取歌词,用QMap格式储存,不同标签开头用不同的key值储存。
获取每个标签中的时间,将时间和相对应的歌词以键值对的形式储存到QMap中。
显示歌词将当前时间以参数的形式传入,将时间对应的值读出。
本人初学QT,已经是尽力了,但还有很多做不好的地方,还有一些方法和思路之后再补充。
播放视频貌似还有点bug,界面太丑,歌词没实现滚动,只能显示当前播放到的歌词,希望大家讨论指导。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。










