1引言
關(guān)于動(dòng)感歌詞屿聋,我們都不陌生穗泵,最常見(jiàn)的就是去唱K時(shí)峡扩,MV上面的歌詞限煞,還有就是酷狗、天天動(dòng)聽(tīng)和QQ音樂(lè)等播放器的歌詞锡搜,它們都是屬于動(dòng)態(tài)歌詞橙困,它們都是精確到每個(gè)【字】,這大大提高了用戶的體驗(yàn)耕餐。如果一個(gè)菜鳥想自己實(shí)現(xiàn)動(dòng)感歌詞該怎么辦凡傅?是的,下面我將從我自己的一些自身經(jīng)歷來(lái)談一下肠缔,怎樣實(shí)現(xiàn)動(dòng)態(tài)歌詞.
?我記得當(dāng)時(shí)自己第一次弄java swing版本的音樂(lè)播放器夏跷,遇到歌詞模塊時(shí),第一時(shí)間就是百度明未。但是度娘給我顯示的答案100%都是lrc的歌詞(lrc歌詞不是精確到字的槽华,只精確到行),可見(jiàn)lrc歷史悠久趟妥,深深影響幾代人啊猫态。其實(shí)當(dāng)時(shí),我也不喜歡用lrc歌詞披摄,不過(guò)沒(méi)辦法扒籽!像當(dāng)時(shí)流行的酷狗播放器疚膊,歌詞還是加密的义辕,你看不了。好了寓盗,等到好不容易知道了歌詞的內(nèi)容灌砖,也解析出來(lái)了,就是不知怎樣編寫代碼才能在界面上面顯示出動(dòng)感歌詞的效果傀蚌。是的基显,就是因?yàn)檫@一大堆的不知道,不懂喳张,阻礙了我對(duì)動(dòng)態(tài)歌詞的進(jìn)一步了解续镇。
2動(dòng)態(tài)歌詞格式
下面將對(duì)現(xiàn)在流行的一些動(dòng)感歌詞進(jìn)行分析美澳,因?yàn)槲覀円獙?shí)現(xiàn)動(dòng)感歌詞的生成和顯示销部,就必須要先了解摸航,它們的歌詞文件究竟保存了一些什么內(nèi)容,為什么可以精確到每個(gè)【字】舅桩。
2.1KSC歌詞
?這種歌詞格式應(yīng)該是我最早就接觸的了酱虎,就是卡拉OK歌詞,它的歌詞內(nèi)容是不加密的擂涛,真是幫了大忙读串。是的,在我走投無(wú)路的時(shí)候撒妈,是它拉了我一把恢暖,讓我對(duì)動(dòng)感歌詞恢復(fù)了熱情,當(dāng)時(shí)知道有這種歌詞格式時(shí)狰右,我還特意去下載了一個(gè)《小灰熊卡拉ok字幕制作軟件》來(lái)制作歌詞杰捂。話不多說(shuō),看一下這種歌詞的格式是怎樣的:
karaoke.songname := '你要的愛(ài)';
karaoke.singer := '戴佩妮';
karaoke.add('00:03.298', '00:06.771', '雖然經(jīng)常夢(mèng)見(jiàn)你', '467,215,195,936,282,568,810'); ?
karaoke.add('00:09.571', '00:12.105', '還是毫無(wú)頭緒', '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');
由其格式可知:行歌詞對(duì)英文和空格棋蚌,都用了[]來(lái)包住嫁佳,其實(shí)該歌詞解析起來(lái),難度還是挺大的谷暮。蒿往。。湿弦。
karaoke.songname := '{歌名}';
karaoke.singer := '{歌手}';
karaoke.add('{行開(kāi)始時(shí)間}', '{行結(jié)束時(shí)間}', '{行歌詞}', '{每個(gè)字持續(xù)的時(shí)間:?jiǎn)挝粸?ms }');
2.2TRC歌詞
該歌詞是天天動(dòng)聽(tīng)使用的動(dòng)感歌詞瓤漏,由于網(wǎng)上的資源比較少,我直接引用我參考的博客內(nèi)容
[ar:胡彥斌] ?
?[ti:當(dāng)你要離開(kāi)的時(shí)候] ?
[al:] ?
[total:243000] ??
[offset:0]?
[by:ttpod] ??
[00:16.54]<250>當(dāng)<300>你<1852>要<249>離<452>開(kāi)<201>的<451>時(shí)<3801>候 ??
[00:24.32]<200>我<200>們<1201>走<250>過(guò)<250>了<251>無(wú)<350>數(shù)<350>個(gè)<600>路<3851>口
由其格式可知:字前面的數(shù)字省撑,為該字的持續(xù)時(shí)間赌蔑。由于沒(méi)有行結(jié)束時(shí)間,解析起來(lái)竟秫,還是有點(diǎn)難度娃惯。
[ar:歌手名]、[ti:歌曲名]肥败、[al:專輯名]趾浅、[by:編輯者(指歌詞的制作人)]、[offset:時(shí)間補(bǔ)償值] (其單位是毫秒馒稍,正值表示整體提前皿哨,負(fù)值相反。這是用于總體調(diào)整顯示快慢的)[total:歌曲時(shí)間長(zhǎng)度]
[{行開(kāi)始時(shí)間}]<{每個(gè)字持續(xù)時(shí)間:?jiǎn)挝籱s}>{字}<{每個(gè)字持續(xù)時(shí)間:?jiǎn)挝籱s}>字
2.3KRC歌詞
該歌詞是酷狗使用的動(dòng)感歌詞纽谒,無(wú)錯(cuò)证膨,加密的。不過(guò)網(wǎng)上早已有人破解了鼓黔,下面給出破解的文本內(nèi)容央勒,該歌詞不僅是加密不见,還對(duì)歌詞內(nèi)容進(jìn)行了壓縮處理。
[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>最后一個(gè)0是什么意思崔步,我也不知道稳吮,但是這并不影響我們對(duì)該歌詞的解析。井濒。灶似。。
[ar:歌手名]瑞你、[ti:歌曲名]酪惭、[al:專輯名]、[by:編輯者(指歌詞的制作人)]者甲、[offset:時(shí)間補(bǔ)償值] (其單位是毫秒撞蚕,正值表示整體提前,負(fù)值相反过牙。這是用于總體調(diào)整顯示快慢的)[total:歌曲時(shí)間長(zhǎng)度]甥厦、[sign:簽名]
[{行開(kāi)始時(shí)間},{行持續(xù)時(shí)間}]<{字開(kāi)始時(shí)間},{字持續(xù)時(shí)間},0>{字}<{字開(kāi)始時(shí)間},{字持續(xù)時(shí)間},0>{字}
2.4HRCX歌詞
該歌詞是我在弄《樂(lè)樂(lè)音樂(lè)》音樂(lè)播放器時(shí),自定義的一種歌詞格式(happy lyrics)寇钉,它是可以精確到【字】的刀疙。當(dāng)然,我在生成該歌詞時(shí)扫倡,也對(duì)歌詞的內(nèi)容進(jìn)行了壓縮處理谦秧。下面給出解壓后的文本內(nèi)容:
[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>','是你夢(mèng)中的女郎','<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>');
由其格式可知:歌詞內(nèi)容方面參考了ksc歌詞,用[]來(lái)包住撵溃,將重復(fù)的歌詞(高潮部分)歸為一行疚鲤,這也算是一種優(yōu)化。
[ar:歌手名]缘挑、[ti:歌曲名]集歇、[by:編輯者(指歌詞的制作人)]、[offset:時(shí)間補(bǔ)償值] (其單位是毫秒语淘,正值表示整體提前诲宇,負(fù)值相反。這是用于總體調(diào)整顯示快慢的)[total:歌曲時(shí)間長(zhǎng)度]惶翻、
haplayer.lrc('<{行開(kāi)始時(shí)間:?jiǎn)挝籱s},{行結(jié)束時(shí)間:?jiǎn)挝籱s}>','{歌詞}','<{字持續(xù)時(shí)間}>');
haplayer.lrc('<{行開(kāi)始時(shí)間:?jiǎn)挝籱s},{行結(jié)束時(shí)間:?jiǎn)挝籱s}><{行開(kāi)始時(shí)間:?jiǎn)挝籱s},{行結(jié)束時(shí)間:?jiǎn)挝籱s}>','{歌詞}','<{字持續(xù)時(shí)間}><{字持續(xù)時(shí)間}>');
3總結(jié)與分析
不論動(dòng)感歌詞是什么格式姑蓝,內(nèi)容怎樣變,它們都是可以歸納為幾個(gè)屬性來(lái)設(shè)計(jì)實(shí)體類:
3.1標(biāo)簽
[ar:歌手名]吕粗、[ti:歌曲名]纺荧、[by:編輯者(指歌詞的制作人)]、[offset:時(shí)間補(bǔ)償值] (其單位是毫秒,正值表示整體提前宙暇,負(fù)值相反榕茧。這是用于總體調(diào)整顯示快慢的)[total:歌曲時(shí)間長(zhǎng)度]、
3.2行開(kāi)始時(shí)間
3.3行結(jié)束時(shí)間
3.4行歌詞
3.5歌詞每個(gè)字持續(xù)時(shí)間
4實(shí)體類設(shè)計(jì)
附上歌詞實(shí)體類客给、行歌詞實(shí)體類、標(biāo)簽實(shí)體類
4.1歌詞實(shí)體(LyricsInfo)
4.2行歌詞實(shí)體(LyricsLineInfo)
4.3標(biāo)簽實(shí)體(LyricsTag)
5參考博客
iOS音樂(lè)播放器開(kāi)發(fā)(擴(kuò)展)-歌詞格式
6最后
下一篇肢簿,將介紹動(dòng)態(tài)歌詞的生成靶剑。如有侵權(quán),麻煩告知池充。