Android开发 歌词(仅作记录)

关于MP3标签

MP3文件本身只有音频信息,诸如标题、歌手、专辑等等信息统统是没有的。然而在windows资源管理器中查看mp3文件,或者用播放器时能看到这些信息,就是MP3标签的功劳了。MP3标签有多种格式,但是没有一项国际标准,也即是说没有统一的标准。不同类型的标签,其结构、大小、存储的信息都不同。

1.ID3v1 Tag

这是比较早期的一种标签,大部分软硬件,包括window都可以识别。它存储在mp3文件的最后,长度固定为128字节,以“TAG”标记开头。用UltraEdit等软件可以很容易看到这一点。这128自己又被分为固定大小的几段,分别存储歌手,专辑,评论,歌曲类型等最基本的信息。由于128字节的限制,ID3v1标签中没有歌词信息;更为致命的一个缺点是,ID3v1标签位于mp3文件的结尾处,大概当时的设计者没有预料到互联网技术的爆发,使得这种标签在流媒体大行其道的今天变得有些尴尬:你得等整个文件都缓冲完毕才能得到曲目信息。但是,简单和兼容仍是它最大的优点 :)

2.ID3v2 Tag

这是ID3v1之后若干年提出的一项新的标签格式,有多个子版本,常见的是v2.3.0. 曾经看到有人说ID3v2放在mp3文件的开头是因为ID3v1放在结尾而别无选择,这是不对的,下面我还要再说这个问题。很大程度上是因为上面提到的ID3v1放在结尾的缺点,放在开头的话可以在流媒体中发挥优势。(事实上,这个标签的设计者为了获得更大程度的方便,允许在文件结尾也放置ID3v2标签,但在ID3v1之前,以提高从结尾开始查找的速度)

ID3v2标签的改进不止如此。它极大地扩展了标签的容量,是变长的,最大可达大约256MB(它用28bit来存储标签大小,2^28)。这个数字大的惊人,可以预计,这个标签格式未来100年也不会过时_ 所以存储歌词当然是小case了。不仅如此,ID3v2甚至同时支持同步歌词和不同步歌词,也就是前面提到的ID3v2 Synchronized Lyrics 和 ID3v2 Unsynchronized Lyrics. 关于这两种歌词我会在后面详细说明。

3.APEv2 Tag

这是一种类似ID3v1的标签,其内容也很简单,但大小不完全固定,一般稍大于ID3v1,内容也丰富一些,比如有增益信息。但是仍然不包含歌词。其位置在mp3本身数据的后面,ID3v1标签和其他存放在末尾的标签之前。标签以"APETAGEX"开头。对于这个标签的认识完全来自千千静听,呵呵,不知道还有什么其他的播放器支持它。

关于歌词

mp3的歌词分为两种:外置的歌词文件和内嵌的歌词。外置的歌词主要指.lrc格式的文本文件。

1.LRC歌词

这是大多数播放器支持的外挂歌词。对于电脑上的播放软件来说,他可以在歌曲和歌词文件之间建立一个映射(关联),这当然是很方便的。可是对于mp3播放机来说就没那么容易了,两者的文件名必须相同。(扩展名当然不同了:) 好在千千给我们提供了自动命名的功能,甚至在你通过千千把mp3文件发送到可移动磁盘的时候,它还很贴心地问你要不要把关联的歌词文件也烤过去,多好的软件!

lrc格式其实就是纯文本,用notepad打开可以看到。示例
[02:09.30][04:02.22]On a dark desert highway, cool wind in my hair
它的结构以行为单位,行首是用中括号[]括起来的时间,后面是歌词内容。也许你要问了,为什么有两个时间标记呢?哈哈,lrc格式是很聪明的,对于某些重复的歌词,它就只写时间标签把内容省略了。同一行中不管有多少时间标签,其歌词内容都是那一个。还有一点要说明,虽然是一行一行出现的,但是这些行没有顺序的,也就是说那些时间标签不一定要按时间排序的。这样的目的也是为了编辑歌词的方便,比如你要插入一句歌词,不用再找它应该在什么位置。

2.ID3v2 Synchronized Lyrics

这个歌词包含在ID3v2标签中,代号是SYLT。它也是由好多小段组成(按时间顺序排列),每个小段包含了时间标签和歌词内容,但具体结构和lrc那种不同了。按其标准严格地说,每个小段应该对以一个音节,这样把歌词分的很细很细,实际上也不用这么夸张。我的程序里面就是还按一句一句的来。

3.ID3v2 Unsynchronized Lyrics

这个歌词也包含在ID3v2标签中,代号是USLT。从字面可以看出,非同步歌词,抑或叫异步歌词,其不包含时间信息,就是一下子把歌词全显示出来。这就显得不那么吸引人了,所以我的程序中放弃了它,仅仅写入了ID3v2 Synchronized Lyrics。顺便说一下,千千静听对这两种ID3歌词都不支持,而微软的Media Player支持。以前我也从没有见过WMP可以显示歌词的,其实它可以,而且能够编辑歌词。

4.Lyrics3v2

这就是千千静听的那个内嵌歌词格式。和上面的两者不同,它是以歌词信息的形式单独出现的,并不依附于某个mp3标签。他的位置在APEv2标签(如果有的话)之后,ID3v1之前。开头标记是"LYRICSBEGIN",结束标记为"LYRICS200"。他的结构相对简单,基本上是照抄.lrc歌词的格式。

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

推荐阅读更多精彩内容