根据FLAC 文档,图片可以存储在 flac 音频格式中,但歌词(可能是 lrc、srt,甚至 ass/ssa)未在该文档中提及。
那么,如何通过Linux平台运行的软件从flac中删除嵌入的图片,并在flac中添加歌词呢?
(优先考虑 FFmpeg/avconv。)
答案1
假设嵌入的艺术品位于 flac 标准 PICTURE 块中,那么:
metaflac --remove --block-type=PICTURE flacfile.flac
...应该这么做。
如果艺术品采用旧的、非标准的 b64 编码格式,那么:
metaflac --remove-tag=COVERART flacfile.flac
..应该会的。不过不知道歌词。
答案2
您也可以使用 metaflac 添加歌词。假设“Tomorrow Never Knows”的歌词位于文件“2-06.lyrics”中:
$ ls
'Grateful Dead -- 2-06 - Tomorrow Never Knows.flac' 2-06.lyrics
$ metaflac --remove-tag="Lyrics" "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
$ metaflac --set-tag-from-file="Lyrics=2-06.lyrics" "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
$ metaflac --show-tag="Lyrics" "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac" |more
Lyrics=Turn off your mind, relax
and float down stream
--More--
如果你想通过 STDIN 将歌词粘贴到终端(例如,在网页搜索之后),然后按 [CTRL-D]:
$ metaflac --set-tag="Lyrics=$(cat -)" "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
[paste lyrics]
^D
注意:您也可以在 ffmpeg 中执行此操作。要从文件 2-06.lyrics 读取:
$ ffmpeg -y -i "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac" -codec copy -metadata "Lyrics=$(cat lyrics)" "~Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
$ mv "~Grateful Dead -- 2-06 - Tomorrow Never Knows.flac" "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
如果你想通过 STDIN 然后按 [CTRL-D] 将歌词粘贴到终端:
$ ffmpeg -y -i "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac" -codec copy -metadata "Lyrics=$(cat -)" "~Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
[paste lyrics]
^D
$ mv "~Grateful Dead -- 2-06 - Tomorrow Never Knows.flac" "Grateful Dead -- 2-06 - Tomorrow Never Knows.flac"
如果您想要标记整个目录,您可以将其放入 for 循环中:
$ for f in *flac; do metaflac --remove-tag="Lyrics"; printf 'Paste lyrics for %s followed by Control-D:\n' "$f"; metaflac --set-tag="Lyrics=$(cat -)" "$f"; done