android krc歌词解析,10行代码解析krc歌词文件

互联网上,我们常见的歌词格式有 LRC、TRC(天天动听歌词)、KRC(KuGou ResourCe,酷狗资源文件)和 QRC(QQ音乐歌词);在影视制作中,人们通常会用其他的卡拉 OK 字幕格式,例如 KSC(KBuilder 卡拉 OK 字幕描述脚本文件) 和 KAJ(Sayatoo 项目文件) 格式。

一、lrc文件实例

lrc意思是lyric

[ti:最炫民族风]

[ar:凤凰传奇]

[by:百度网友]

[00:23.25]苍茫的天涯是我的爱

[00:27.16]绵绵的青山脚下花正开

[00:30.88]什么样的节奏是最呀最摇摆

[00:34.64]什么样的歌声才是最开怀

首先有一些记录歌曲及歌词信息的东东,我们将其称作“ID 标签”(ID Tags),它可以包含歌曲名(ti)、专集(al)、歌手(ar)、歌词创建者(by)、歌词延迟调整(offset)等信息。

LRC 格式为每行歌词指定起始时刻,格式为[分钟:秒.百分秒]。

LRC文件的时间一般精确到行,如果精确到字,lyc文件也是可以的。只需要在每个字开头填充好时间即可。

在LRC基础上,有人搞出了增强LRC、扩展LRC,其实跟LRC差不多,毕竟歌词文件这个问题本身就很简单:建立歌词和时间之间的映射,顺便在文件头部添加一些歌曲信息。

二、krc文件

krc文件跟lrc文件很像,但是krc是二进制文件。在解析速度、存储空间上具有一定优势,但是可读性差(可是又有谁会去读歌词文件呢)。

krc文件像大多数二进制文件一样,开头四个字节是krc1,表示文件类型和版本号。接下来的内容需要先解密,然后解压缩。

import zlib

a = open("haha.krc", "rb").read()

encrypt_key = (64, 71, 97, 119, 94, 50, 116, 71, 81, 54, 49, 45, 206, 210, 110, 105)

print(a[:4]) # krc1

content = a[4:] # 前四个字节是magic number,表示版本号等

compress_content = bytes(content[i] ^ encrypt_key[i % len(encrypt_key)] for i in range(len(content)))

text_bytes = zlib.decompress(bytes(compress_content))

text = text_bytes.decode("utf8")

print(text)

参考资料

附录:《后会无期》krc歌词

b'k

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值