文档章节

浅谈动感歌词-歌词解析篇

aak
 aak
发布于 2017/01/12 21:20
字数 784
阅读 30
收藏 1

1引言

要解析动感歌词文件,首先就要清楚动感歌词的文件内容,当然歌词的文件内容,我们已经在分析篇的文章里面介绍过了,这里将不再做详细的介绍,当我们可以把歌词成功解析出来后,再结合歌词生成篇,一个简单的歌词格式转换工具也就出来了。

2歌词解析

歌词解析,其实就是把文件里面的标签内容、歌词时间和歌词内容解析出来,当然,为了后期拓展其它的动感歌词格式,我们这里要好好设计一番。

2.1实体类

2.1.1歌词读取器

主要用来约束动感歌词读取器要实现的方法,可用于拓展实现其它的动感歌词格式。

2.1.2歌词实体

 

2.1.3行歌词实体

 

2.1.4标签实体

 

2.2ksc解析

2.2.1文件内容

karaoke.songname := '你要的爱';

karaoke.singer := '戴佩妮';

karaoke.add('00:03.298', '00:06.771', '虽然经常梦见你', '467,215,195,936,282,568,810');

karaoke.add('00:09.571', '00:12.105', '还是毫无头绪', '245,164,211,261,451,1202');

karaoke.add('00:14.809', '00:16.626', '外面正在下着雨', '271,200,195,179,271,266,435');

karaoke.add('00:17.245', '00:19.908', '今天是星期几', '195,143,175,379,758,1013');

karaoke.add('00:20.492', '00:22.089', '[but ][i ][don`t ][know]', '179,190,286,942');

2.2.2歌词读取器实体

 

2.2.3歌词解析部分代码

 

2.3krc解析

2.3.1文件内容

[id:$00FF2B12]

[ar:李健]

[ti:美若黎明]

[by:]

[hash:e1c2628fad0a46f94df6b8b071df078f]

[al:]

[sign:]

[qq:]

[total:267096]

[offset:10000]

[language:eyJjb250ZW50IjpbXSwidmVyc2lvbiI6MX0=]

[1679,1550]<0,399,0>作<399,200,0>词<599,250,0>:<849,301,0>李<1150,400,0>健

[3229,1650]<0,350,0>作<350,300,0>曲<650,350,0>:<1000,350,0>李<1350,300,0>健

2.3.2歌词读取器实体

 

2.3.3歌词解析部分代码

 

2.4hrcx解析

2.4.1文件内容

[ti:右手戒指];

[total:272706];

[ar:金海心];

[offset:0];

[by:HappyPlayer-PC];

haplayer.lrc('<1270,9630>','金海[心 ][- ]右手戒指','<1010,780,830,1410,800,1210,1410,910>');

haplayer.lrc('<18710,19810>','[la ][la ][la ]','<300,400,400>');

haplayer.lrc('<20020,22840><77150,79970><163120,165840><191920,194740>','是你梦中的女郎','<200,300,400,300,510,500,610><310,400,300,510,400,400,500><200,510,400,400,410,500,300><210,400,300,400,400,510,600>');

2.4.2歌词读取器实体

 

2.4.3歌词解析部分代码

 

3总结

经过以上歌词的解析,我觉得酷狗的歌词解析起来是最为轻松的。

不过歌词的解析的过程,大致可概括为如下几点:

(1)读取文件内容,如果歌词内容加密的,要进行解密

(2)以行分割文件内容,得到每一行的内容

(3)匹配行内容,判断是标签行、还是歌词内容行

(4)如果是标签行内容,则根据标签类型解析内容

(5)如果是歌词内容行,则根据歌词格式解析歌词内容(主要用到正则表达式)

4参考

酷狗的krc歌词文件的解析

5源码

歌词解析和生成器

6最后

下一篇,将介绍动感歌词的显示。如有侵权,麻烦告知。

© 著作权归作者所有

aak

aak

粉丝 2
博文 7
码字总数 7857
作品 0
广州
私信 提问
Android仿酷狗桌面悬浮歌词效果

引言 该悬浮歌词功能是乐乐音乐中的一个模块,主要是APP在后台运行时,在手机的桌面上出现一个歌词窗口,方便用户可以随时随地地查看歌词及操作APP,除了通知栏外,多提供了一个操作APP界面,...

只有一条尾巴的猫
2018/05/13
0
0
不在乎y/LyricTools

LyricTools 支持qrc、krc、trc、网易云音乐的歌词相互转,支持输出krc、qrc、trc、 网易云音乐、srt、smi、lrc、ksc、ssa、foobar2000插件eslyric格式 鉴于有些人实在让人生气,所以不再开源...

不在乎y
2015/11/01
0
0
歌词显示控件的实现上——歌词解析

最近打算仿网易云音乐的音乐播放器,除了网络框架、接口数据等这些外,最核心的就是音乐的播放和歌词的显示。 考虑到歌词显示控件涉及到歌词解析,自定义控件的实现等等诸多方面,可能文章的...

安卓干货营
2017/10/31
0
0
动感歌词制作工具--MakeLyric

源码中带有两个工具,一个制作歌词的(暂时只支持中文歌词); 另一个是一个通用的转换工具,批量将现有qrc, krc, trc, 网易云音乐歌词相互转换,另可输出lrc及ksc格式。 关于qrc的问题,以前...

不在乎y
2015/12/01
795
1
iOS音频播放器锁屏歌词显示与性能优化

iOS音频播放器锁屏歌词显示与性能优化 一、引言 前边有博客探讨了有关iOS开发中音频播放的技术与进行后台音频播放并在后台与用户进行交互的方法,本篇将探讨一种在锁屏界面同步显示歌词歌词的...

珲少
2016/03/13
484
0

没有更多内容

加载失败,请刷新页面

加载更多

ubuntu或ubuntu kylin优麒麟中安装QQ、wechat微信、百度网盘

从中国国内的地址下载deepin wine,码云上的。这样网速比较快。然后,按照说明向下安装。 https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu...

gugudu
15分钟前
1
0
基于redis分布式锁实现“秒杀”

最近在项目中遇到了类似“秒杀”的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓“秒杀”的基本思路。 业务场景 所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源...

别打我会飞
34分钟前
10
0
Zookeeper的实践指南

本章重点 1.数据存储2.基于Java API初探Zookeeper的使用3.深入分析Watcher机制的实现原理4.Curator客户端的使用,简单高效 数据存储 事务日志快照日志运行时日志 bin/zookeepe...

须臾之余
38分钟前
1
0
MySQL mybatis Point类型数据

MySQL中的point用于表示GIS中的地理坐标,在GIS中广泛使用 如何写入mysql,如下图: CREATE TABLE `test-point` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号', `point` ......

张欢19933
49分钟前
2
0
设计模式-适配器模式

适配器模式 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入...

HOT_POT
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部