jitwxs / 163MusicLyrics

Windows 云音乐歌词获取【网易云、QQ音乐】
Apache License 2.0
1.78k stars 96 forks source link

目前似乎不支持歌词内嵌? #167

Closed x1ntt closed 1 year ago

x1ntt commented 1 year ago

*描述您期望的功能 Describe your feature**

可以加入歌词内嵌功能吗?这样就不用单独维护lrc文件了,很多播放软件是支持内嵌歌词显示的,所以我认为这么做是一个很方便的事情。 这个是我的项目,和您的这个功能差不多,但是显然不如您的成熟(不过好像并不是同样功能) LrcInlineTool

目前我知道mp3和flac是支持的,是否考虑这样的功能呢?

daoxi commented 1 year ago

内嵌歌词确实很方便,不过因为这通常属于“管理音频文件元数据”而不算是“获取歌词”的范畴(而且可能会需要使用额外的库),所以感觉作者可能不一定会打算加。(顺带一提,下载的歌词很多都总体滞后200~800ms左右(Q音更常见),最好先根据情况批量偏移时间戳后再用)

不过,你可以参考我的方法,能将所有LRC文件的歌词一次性全部批量导入到同文件名的MP3文件中:

先下载Mp3tag

首次使用时:点“Actions”->“Actions”->点黄星按钮来创建新的action group(命名随意),在其中点黄星按钮来创建新的action并选择type为“Import text file”,之后在Field栏里选“UNSYNCEDLYRICS”,在Filename栏填“%_filename%.lrc”,点OK完成对action group的设置。

每次使用时:先选中多个MP3文件,再点“Actions”后点之前设好的对应的action group名字,即可批量插入同目录中与MP3文件同名的LRC文件作为歌词。

注: 以上方法应该能兼容几乎所有的支持MP3内嵌同步歌词的播放器 FLAC我没试过,其使用的是Vorbis comment而非MP3通常使用的ID3v2,所以嵌入的方法可能有一些不同

x1ntt commented 1 year ago

内嵌歌词确实很方便,不过因为这通常属于“管理音频文件元数据”而不算是“获取歌词”的范畴(而且可能会需要使用额外的库),所以感觉作者可能不一定会打算加。(顺带一提,下载的歌词很多都总体滞后200~800ms左右(Q音更常见),最好先根据情况批量偏移时间戳后再用)

不过,你可以参考我的方法,能将所有LRC文件的歌词一次性全部批量导入到同文件名的MP3文件中:

先下载Mp3tag

首次使用时:点“Actions”->“Actions”->点黄星按钮来创建新的action group(命名随意),在其中点黄星按钮来创建新的action并选择type为“Import text file”,之后在Field栏里选“UNSYNCEDLYRICS”,在Filename栏填“%_filename%.lrc”,点OK完成对action group的设置。

每次使用时:先选中多个MP3文件,再点“Actions”后点之前设好的对应的action group名字,即可批量插入同目录中与MP3文件同名的LRC文件作为歌词。

注: 以上方法应该能兼容几乎所有的支持MP3内嵌同步歌词的播放器 FLAC我没试过,其使用的是Vorbis comment而非MP3通常使用的ID3v2,所以嵌入的方法可能有一些不同

确实如此,从项目定位的角度来说,大概率不会添加这样的功能。同时也谢谢您的建议 另外,想要请教一点。如果我想实现双语歌词,那么Lrc应该怎么写呢?两种语言的时间相同即可吗?但是这样我使用的navidrome不支持,是否有类似这样的项目推荐呢? 并且正常来说给ID3填充歌词,似乎能够指定语言。那么对于翻译的双语歌词,应该设置成什么语言呢?考虑到很多播放器是国外项目,也许直接当作英文处理会更好?

daoxi commented 1 year ago

如果我想实现双语歌词,那么Lrc应该怎么写呢?两种语言的时间相同即可吗?但是这样我使用的navidrome不支持,是否有类似这样的项目推荐呢?

我近期正好刚刚回答过一个类似的Issue,在里面阐述了我推荐的格式(navidrome我没试过,但理论上只要是能预览下一句歌词的显示模式,都可以较好的显示我那里面推荐的格式。从长远来看,选择一个兼容性更好的格式比更换播放器更靠谱,毕竟你的音乐库也许会跟你一辈子),你有后续问题可以在那Issue里面继续问(因为Github似乎不会提示被关闭后的Issue的回复,你在这下面回复我不一定会看到)

播放器推荐方面,我通常只本地播放(毕竟有自己的音乐库相比流媒体的一大优势就是不依赖网络),所以跟你的需求不一定完全匹配:PC端建议foobar2000加OpenLyricsESLyric,安卓端建议Musicolet,iOS端我至今没找到个像样的支持本地同步歌词的播放器...

并且正常来说给ID3填充歌词,似乎能够指定语言。那么对于翻译的双语歌词,应该设置成什么语言呢?考虑到很多播放器是国外项目,也许直接当作英文处理会更好?

是的,ID3v2确实能指定语言,但我目前没见过任何支持选择歌词语言的播放器(比如iTunes据说只支持选定成英语的歌词,但实际歌词里你可以存任何语言的内容,反正都是Unicode),所以建议ID3v2内嵌歌词不论是什么语言全都统一选英语(Mp3tag中Options->Tags->Advanced->ID3v2 commend langauge code默认选eng就是英语)

顺带说下,其实ID3v2有两个储存歌词的帧,一个是同步歌词帧(SYLT),另一个是非同步歌词帧(USLT),上面的方法实际上是在用非同步歌词帧(USLT)去存储同步歌词(播放器中仍能作为同步歌词正常滚动,除非压根不支持同步歌词,比如iTunes),这样做是因为ID3v2同步歌词帧(SYLT)几乎没有任何播放器支持(除了停更多年的MiniLyrics和较为落伍的JetAudio)