LRC 歌词同步

    技术2022-05-20  39

    LRC 歌词同步  一、准备工作  既然要制作歌词同步程序,首先要准备一首歌,我们就以“周杰伦-青花瓷”为例。首先要下载这首“青花瓷.mp3”,保存为“C:/My Player/Music/青花瓷.mp3”。还要下载青花瓷的 LRC 文件,大家可以到网上下载(地址见附录),将文本内容保存为“C:/My Player/LRC/青花瓷.lrc”。我们的程序(类和FLA)则保存在“C:/My Player/”文件夹下。青花瓷.lrc 文件:[ti:青花瓷][ar:周杰伦][al:我很忙][by:张琪][00:00.00]发送短信18到291199下载该歌曲到手机[00:01.11]青花瓷[03:36.49][00:21.39]素眉勾勒秋千话北风龙转丹 [00:26.08]屏层鸟绘的牡丹一如你梳妆[00:30.46]黯然腾香透过窗心事我了然 [00:34.93]宣纸上皱边直尺各一半[00:39.49]油色渲染侍女图因为被失藏 [00:43.83]而你嫣然的一笑如含苞待放[00:48.30]你的美一缕飘散 [00:50.77]去到我去不了的地方[02:23.97][00:55.77][03:01.92][02:25.63][00:56.90]天正在等烟雨 [03:03.57][02:27.91][00:58.99]而我在等你 [03:05.92][02:30.44][01:00.93]炊烟袅袅升起 [03:07.76][02:32.25][01:03.49]隔江千万里[03:10.36][02:34.85][01:05.84]在平地书刻你房间上的飘影 [03:14.67][02:38.73][01:09.87]就当我为遇见你伏笔[03:18.83][02:43.35][01:14.34]天正在等烟雨 [03:21.20][02:45.60][01:16.68]而我在等你 [03:23.71][02:48.01][01:18.99]月色被打捞起 [03:25.74][02:50.10][01:21.18]掩盖了结局[03:28.33][02:52.54][01:23.72]如传世的青花瓷在独自美丽 [03:32.30][02:56.67][01:27.65]你眼的笑意[01:50.25]色白花青的景已跃然于碗底 [01:54.69]临摹宋体落款时却惦记着你[01:59.22]你隐藏在药效里一千年的秘密 [02:03.75]急溪里犹如羞花沾落地[02:08.32]林外芭蕉 惹咒语 [02:10.57]梦幻的铜绿[02:12.84]而我路过那江南小镇的等你[02:17.19]在泼墨山水画里 [02:19.75]你从墨色深处被隐去  大家也可以把这个文本内容复制下来,然后在“C:/My Player/LRC/”下创建一个文本文档,将内容粘贴上去,再将文档保存为“青花瓷.lrc”,注意扩展名是“.lrc”。Lrc歌词文件格式说明  扩展名为Lrc格式的文件,是MP3播放器唯一能够识别的歌词文件,在MP3数码播放器或千千静听中可以区同步显示歌词。它是一种包含着“[*:*]”形式的“标签(tag)”的、基于纯文本的歌词专用格式。Lrc歌词文本中含有两类标签:■ 标识标签(ID-tags)其格式为"[标识名:值]"。大小写等价。以下是预定义的标签。   [ar:艺人名]   [ti:曲名]   [al:专辑名]   [by:编者(指编辑LRC歌词的人)]   [offset:时间补偿值] 其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的。■ 时间标签(Time-tag)  形式为"[mm:ss]"或"[mm:ss.fff]"(分钟数:秒数)。数字须为非负整数, 比如"[12:34.5]"是有效的,而"[0x0C:-34.5]"无效。  时间标签需位于某行歌词中的句首部分,一行歌词可以包含多个时间标签(比如歌词中的迭句部分)。当歌曲播放到达某一时间点时,MP3就会寻找对应的时间标签并显示标签后面的歌词文本,这样就完成了“歌词同步”的功能。[分钟:秒.毫秒]歌词    例如,“[01:50.25]色白花青的景已跃然于碗底”表示在1分50.25秒时,歌词内容是“色白花青的景已跃然于碗底”。  还有一种形式是“[03:01.92][02:25.63][00:56.90]天正在等烟雨”这种形式常用于赋格部分(俗称:歌曲的高潮部分),它表示在 03:01.92, 02:25.63, 00:56.90 时的歌词都是“天正在等烟雨”。由于这种形式的存在,使后面的编程稍显复杂,不过没关系,凭借各位的聪明智慧一定没问题。用记事本按照上述格式写好后,将拓展名改为lrc即可做出该文件.LRC歌词是一种通过编辑器把歌词按歌曲歌词出现的时间编辑成一个文件,在播放歌曲时同步依次显示出来的一种歌词文件。把歌曲和LRC歌词命为相同的文件名放在同一目录下,用带显示歌词功能的播放器播放歌曲时歌词就可以同步显示显示,方便查看和学歌。(供程序员阅读参考) 以下列出了开发支持LRC格式的软件时应遵守的一些标准。

    无论是否在行首行内凡具有“[*:*]”形式的都应认为是标签。(注意:其中的冒号并非全角字符“:”)  凡是标签都不应显示。  凡是标签,且被冒号分隔的两部分都为非负数,则应认为是时间标签。因此,对于非标准形式(非“[mm:ss]”)的时间标签也应能识别(如“[0:0]”)。凡是标签,且非时间标签的,应认为是标识标签。标识名中大小写等价。•为了向后兼容,应对未定义的新标签作忽略处理。另应对注释标签([:])后的同一行内容作忽略处理。 应允许一行中存在多个标签,并能正确处理。应能正确处理未排序的标签。实现功能 举例:LRC 内容如下:[00:43.83]而你嫣然的一笑如含苞待放[00:48.30]你的美一缕飘散 [00:50.77]去到我去不了的地方[03:01.92][02:25.63][00:56.90]天正在等烟雨 [03:03.57][02:27.91][00:58.99]而我在等你 [03:05.92][02:30.44][01:00.93]炊烟袅袅升起 [03:07.76][02:32.25][01:03.49]隔江千万里通过字符串处理 放到 二维数组结构体中,并按照时间排序43830 而你嫣然的一笑如含苞待放48300 你的美一缕飘散50770 去到我去不了的地方56900 天正在等烟雨58990 而我在等你60930 炊烟袅袅升起63490 隔江千万里145630 天正在等烟雨147910 而我在等你150440 炊烟袅袅升起152250 隔江千万里181920 天正在等烟雨183570 而我在等你185920 炊烟袅袅升起187760 隔江千万里操作步骤如下:1—读取声音:青花瓷.mp32—播放声音及获取当前播放时间(毫秒):time_ms3—读取外部文件:青花瓷.lrc  ——读取 LRC 文件,这一步非常简单与读取普通的文本文件是一样的;  ——将读取的 LRC 数据按行分割( "/n" 为换行符),数组的每一个元素代表 LRC 的一行内容;  —简单的正则表达式应用或字符串取子串操作  —将字符串按分隔符分隔为数组  ——在数组中提取每一行的时间及歌词,将时间字串转换为计算机可读取的时间(mm*60+ss.ff)毫秒,解决时间序列的问题;4.最后,随着音乐的播放,读取播放时间段内的歌词。用当前播放时间time_ms与LRCarray(数组或结构体)中的时间相比较  如果相等就显示LRCarray中的歌词


    最新回复(0)