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

1引言

关于动感歌词,我们都不陌生,最常见的就是去唱K时,MV上面的歌词,还有就是酷狗、天天动听和QQ音乐等播放器的歌词,它们都是属于动态歌词,它们都是精确到每个【字】,这大大提高了用户的体验。如果一个菜鸟想自己实现动感歌词该怎么办?是的,下面我将从我自己的一些自身经历来谈一下,怎样实现动态歌词.

 我记得当时自己第一次弄java swing版本的音乐播放器,遇到歌词模块时,第一时间就是百度。但是度娘给我显示的答案100%都是lrc的歌词(lrc歌词不是精确到字的,只精确到行),可见lrc历史悠久,深深影响几代人啊。其实当时,我也不喜欢用lrc歌词,不过没办法啊!像当时流行的酷狗播放器,歌词还是加密的,你看不了。好了,等到好不容易知道了歌词的内容,也解析出来了,就是不知怎样编写代码才能在界面上面显示出动感歌词的效果。是的,就是因为这一大堆的不知道,不懂,阻碍了我对动态歌词的进一步了解。

2动态歌词格式

下面将对现在流行的一些动感歌词进行分析,因为我们要实现动感歌词的生成和显示,就必须要先了解,它们的歌词文件究竟保存了一些什么内容,为什么可以精确到每个【字】。

2.1KSC歌词

 这种歌词格式应该是我最早就接触的了,就是卡拉OK歌词,它的歌词内容是不加密的,真是帮了大忙。是的,在我走投无路的时候,是它拉了我一把,让我对动感歌词恢复了热情,当时知道有这种歌词格式时,我还特意去下载了一个《小灰熊卡拉ok字幕制作软件》来制作歌词。话不多说,看一下这种歌词的格式是怎样的:

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');

由其格式可知:行歌词对英文和空格,都用了[]来包住,其实该歌词解析起来,难度还是挺大的。。。。

karaoke.songname := '{歌名}';

karaoke.singer := '{歌手}';

karaoke.add('{行开始时间}', '{行结束时间}', '{行歌词}', '{每个字持续的时间:单位为 ms }');

2.2TRC歌词

该歌词是天天动听使用的动感歌词,由于网上的资源比较少,我直接引用我参考的博客内容

[ar:胡彦斌]  

 [ti:当你要离开的时候]  

[al:]  

[total:243000]   

[offset:0] 

[by:ttpod]   

[00:16.54]<250>当<300>你<1852>要<249>离<452>开<201>的<451>时<3801>候   

[00:24.32]<200>我<200>们<1201>走<250>过<250>了<251>无<350>数<350>个<600>路<3851>口

由其格式可知:字前面的数字,为该字的持续时间。由于没有行结束时间,解析起来,还是有点难度。

[ar:歌手名]、[ti:歌曲名]、[al:专辑名]、[by:编辑者(指歌词的制作人)]、[offset:时间补偿值] (其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的)[total:歌曲时间长度]

[{行开始时间}]<{每个字持续时间:单位ms}>{字}<{每个字持续时间:单位ms}>字

2.3KRC歌词

该歌词是酷狗使用的动感歌词,无错,加密的。不过网上早已有人破解了,下面给出破解的文本内容,该歌词不仅是加密,还对歌词内容进行了压缩处理。

[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>健

由其格式可知:我表示 <0,350,0>最后一个0是什么意思,我也不知道,但是这并不影响我们对该歌词的解析。。。。

[ar:歌手名]、[ti:歌曲名]、[al:专辑名]、[by:编辑者(指歌词的制作人)]、[offset:时间补偿值] (其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的)[total:歌曲时间长度]、[sign:签名]

[{行开始时间},{行持续时间}]<{字开始时间},{字持续时间},0>{字}<{字开始时间},{字持续时间},0>{字}

2.4HRCX歌词

该歌词是我在弄《乐乐音乐》音乐播放器时,自定义的一种歌词格式(happy lyrics),它是可以精确到【字】的。当然,我在生成该歌词时,也对歌词的内容进行了压缩处理。下面给出解压后的文本内容:

[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>');

由其格式可知:歌词内容方面参考了ksc歌词,用[]来包住,将重复的歌词(高潮部分)归为一行,这也算是一种优化。

[ar:歌手名]、[ti:歌曲名]、[by:编辑者(指歌词的制作人)]、[offset:时间补偿值] (其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的)[total:歌曲时间长度]、

haplayer.lrc('<{行开始时间:单位ms},{行结束时间:单位ms}>','{歌词}','<{字持续时间}>');

haplayer.lrc('<{行开始时间:单位ms},{行结束时间:单位ms}><{行开始时间:单位ms},{行结束时间:单位ms}>','{歌词}','<{字持续时间}><{字持续时间}>');

3总结与分析

不论动感歌词是什么格式,内容怎样变,它们都是可以归纳为几个属性来设计实体类:

3.1标签

[ar:歌手名]、[ti:歌曲名]、[by:编辑者(指歌词的制作人)]、[offset:时间补偿值] (其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的)[total:歌曲时间长度]、

3.2行开始时间

3.3行结束时间

3.4行歌词

3.5歌词每个字持续时间

4实体类设计

附上歌词实体类、行歌词实体类、标签实体类

4.1歌词实体(LyricsInfo)


4.2行歌词实体(LyricsLineInfo)


4.3标签实体(LyricsTag)


5参考博客

iOS音乐播放器开发(扩展)-歌词格式

酷狗的krc歌词文件的解析

6最后

下一篇,将介绍动态歌词的生成。如有侵权,麻烦告知。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,869评论 6 13
  • 1引言之前写了几篇关于动感歌词的简单介绍,相信大家还有印象,这里就不多说了,这篇要说的是,关于翻译歌词和音译歌词,...
    只有一条尾巴的猫阅读 1,450评论 2 2
  • 1引言 要解析动感歌词文件,首先就要清楚动感歌词的文件内容,当然歌词的文件内容,我们已经在分析篇的文章里面介绍过了...
    只有一条尾巴的猫阅读 1,451评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,600评论 18 139
  • 2017.6.3 晨起感恩 我十分感恩大恩上师及诸佛菩萨的护佑和加持,带我走出迷茫,看到希望,谢谢,谢谢,谢谢 ...
    鹊曾阅读 195评论 0 1