lrc歌词文件格式及其c代码实现

lrc歌词文件格式及其c代码实现

ID:35201448

大小:104.50 KB

页数:19页

时间:2019-03-21

lrc歌词文件格式及其c代码实现_第1页
lrc歌词文件格式及其c代码实现_第2页
lrc歌词文件格式及其c代码实现_第3页
lrc歌词文件格式及其c代码实现_第4页
lrc歌词文件格式及其c代码实现_第5页
资源描述:

《lrc歌词文件格式及其c代码实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Lrc歌词文件格式说明   扩展名为Lrc格式的文件,是MP3播放器唯一能够识别的歌词文件,在MP3数码播放器或千千静听中可以区同步显示歌词。   它是一种包含着“[*:*]”形式的“标签(tag)”的、基于纯文本的歌词专用格式。最早由郭祥祥先生(Djohan)提出并在其程序中得到应用。这种歌词文件既可以用来实现卡拉OK功能(需要专门程序),又能以普通的文字处理软件查看、编辑。当然,实际操作时通常是用专门的LRC歌词编辑软件进行高效编辑的。Lrc歌词文本中含有两类标签:   一是标识标签,其格式为“[标识名:值]”主要包含以下预定义的标签

2、:[ar:歌手名]、[ti:歌曲名]、[al:专辑名]、[by:编辑者(指lrc歌词的制作人)]、[offset:时间补偿值](其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的,但多数的MP3可能不会支持这种标签)。   二是时间标签,形式为“[mm:ss]”或“[mm:ss.fff]”(分钟数:秒数:毫秒数),时间标签需位于某行歌词中的句首部分,一行歌词可以包含多个时间标签(比如歌词中的迭句部分)。当歌曲播放到达某一时间点时,MP3就会寻找对应的时间标签并显示标签后面的歌词文本,这样就完成了“歌词同步”的功能。■时间

3、标签(Time-tag)   形式为"[mm:ss]"或"[mm:ss.fff]"(分钟数:秒数)。数字须为非负整数,比如"[12:34.5]"是有效的,而"[0x0C:-34.5]"无效。   它可以位于某行歌词中的任意位置。一行歌词可以包含多个时间标签(比如歌词中的迭句部分)。根据这些时间标签,用户端程序会按顺序依次高亮显示歌词,从而实现卡拉OK功能。另外,标签无须排序。■标识标签(ID-tags)其格式为"[标识名:值]"。大小写等价。以下是预定义的标签。  [ar:艺人名]  [ti:曲名]  [al:专辑名]  [by:编者(指

4、编辑LRC歌词的人)]  [offset:时间补偿值]其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的。分钟:秒.毫秒]歌词 19用记事本按照上述格式写好后,将拓展名改为lrc即可做出该文件.LRC歌词是一种通过编辑器把歌词按歌曲歌词出现的时间编辑成一个文件,在播放歌曲时同步依次显示出来的一种歌词文件。把歌曲和LRC歌词命为相同的文件名放在同一目录下,用带显示歌词功能的播放器播放歌曲时歌词就可以同步显示显示,方便查看和学歌。(供程序员阅读参考)   以下列出了开发支持LRC格式的软件时应遵守的一些标准。无论是否在行首,

5、行内凡具有“[*:*]”形式的都应认为是标签。(注意:其中的冒号并非全角字符“:”) 凡是标签都不应显示。   凡是标签,且被冒号分隔的两部分都为非负数,则应认为是时间标签。因此,对于非标准形式(非“[mm:ss]”)的时间标签也应能识别(如“[0:0]”)。凡是标签,且非时间标签的,应认为是标识标签。标识名中大小写等价。·为了向后兼容,应对未定义的新标签作忽略处理。另应对注释标签([:])后的同一行内容作忽略处理。应允许一行中存在多个标签,并能正确处理。应能正确处理未排序的标签。19以下附上C++实现代码,支持ANSI和Unicode格

6、式,超强纠错。-----------------------------------------------------Lyric.h-----------------------------------------------------typedefstruct{DWORDdwStartTime;//TheunitismillisecondCStringcsLyric;}LineLyric,*PLineLyric;classCLyric{public:CLyric();~CLyric();CStringm_csArtist;CStri

7、ngm_csTitle;CStringm_csAlbum;CStringm_csBy;LONGm_lOffset;//LeadtimeofthelyricCStringm_csKey;public:BOOLLoad(LPCWSTRszFileName,LONGlUserOffset=0);//IflUserOffset>0:ahead;if<0:putoffvoidUnLoad();BOOLGetItemByID(DWORDdwItemID,LineLyric&lyric);//GetthelyricdatabydwItemIDDWORD

8、GetTimeByID(DWORDdwItemID);//Getthelyric'sstarttimebydwItemIDLONGGetItemIDByTime(DWORDdwTime,DWO

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。