Android歌词文件格式

上一个开发阶段《Android获取歌词汇总》实现了获取歌词的功能。

现在着手解析歌词。

一、目标

选择合适的歌词格式。

二、歌词格式

  • 歌词形式
形式描述
逐行歌词早期的歌词形式,以行为单位显示歌词,类似于字幕
逐字歌词卡拉OK形式的歌词,精确到每个字。
  • 歌词组成

歌词按行进行排序,每一行以[开始,以]结束。

组成描述
属性用于描述歌词的信息,比如:
ti:标题
ar:艺术家
language:酷狗音乐的翻译歌词
……等其他信息,并且以:分隔名值。
歌词以数字开始的内容,有2种格式分别对应逐行歌词和逐字歌词。
[mi:se.mmm]:逐行歌词,分钟:秒数:毫秒数
[begin,duration]:逐字歌词,开始毫秒数,持续毫秒数
需要注意的是,一行中可以包含多个时间戳。
文本不包含:分割符的属性,出现在酷狗音乐的翻译歌词部分。
  • 翻译歌词

针对外文歌词(如英语、日语、……等)翻译成中文歌词。

翻译歌词通常为逐行形式的歌词(可能也只能逐行吧)。

翻译歌词有2种形式。

形式描述
时间戳与逐行歌词一致,带有时间戳,可以独立使用。
网易云音乐使用该种形式。
时间戳没有时间戳,以文本形式存在,必须配合逐行歌词使用,按索引位置一一对应。
酷狗音乐使用该形式。

三、歌词容器

歌词格式描述的是歌词内容的语法结构。

歌词容器描述的是歌词文件的存储结构。

不同的云音乐平台采用的歌词容器也不相同。

同一个云音乐平台,不同的使用场景,采用的歌词容器也不相同。

音乐平台使用场景描述
网易云音乐Android离线歌词同时包行逐行、逐字、翻译三种形式歌词,但是可选。
纯音乐歌曲,不存在歌词。
Android在线歌词与离线歌词一致,但组织方式略有差别。
酷狗音乐Android离线歌词krc形式,包含逐字和翻译歌词,同样为可选。
目前没有发现逐行歌词。
猜想逐行和逐字为二选一,不会同时存在krc文件中。
Android在线歌词krc格式,包含在json数据中。

四、回顾

歌词格式相对比较固定,无论是网易云音乐还是酷狗音乐,语法结构都比较固定。

麻烦的是歌词容器的结构,不同音乐平台采用的结构都不尽相同。

同一音乐平台也会有多种存储结构。

五、接下来

不同的歌词容器需要不同的加载器。

不同的歌词格式需要不同的解析器。

需要编写一堆的加载器和解析器,然后输出为统一的数据格式。

六、遗留问题

将不同的歌词容器统一成单一的歌词容词。

还是保持分散呢?

虽然不能减少编写加载器和解析器的工作量。

但至少文件格式是一致的,未来不需要查找各家的歌词容器结构。

未来或许有必要统一一下,可以降低代码管理的成本。

导入歌词时,使用原生格式。

加载歌词时,转换成标准格式。

七、Finally

何以故。
须菩提。
一切诸佛。及诸佛阿耨多罗三藐三菩提法。
皆从此经出。

  • 1
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Amoy阿磊

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值