4

对于我的媒体服务器,我正在寻找将标签从我的 FLAC 文件传输到 MP3 的方法。

在 bash 脚本中,我可以使用metaflac将标签提取到本地变量,但是当使用 id3v2 标记 mp3 时,我似乎丢失了国家字符(猜它必须是 unicode?)

此外,我需要能够设置重播增益标签和专辑封面(都存在于 FLAC 中)。

我正在寻找一个无人值守的脚本解决方案。

4

4 回答 4

9

如果您对 Python 解决方案感兴趣,mutagen 库看起来非常好。

它可能很简单:

from mutagen.flac import FLAC
from mutagen.easyid3 import EasyID3

flacfile = FLAC("flacfile.flac")
mp3file = EasyID3("mp3file.mp3")

for tag in flacfile:
    if tag in EasyID3.valid_keys.keys():
        mp3file[tag] = flacfile[tag]

mp3file.save()

我找到了将 mp3 id3 标签复制到 FLAC 文件中的解决方案。

于 2012-04-16T08:36:15.877 回答
6

试试这个工具eyed3。它支持专辑封面嵌入、latin1、utf8、utf16-BE 和 utf16-LE 中的文本编码。但是不支持重放增益。据我了解,它没有得到广泛支持。

于 2012-01-15T21:33:49.197 回答
3

维克多的解决方案为我指明了方向。但是,如果将标签复制到刚刚转换的文件中,例如从 flac 转换为 mp3,它可能会失败。也就是说,如果您将标签复制到的文件还没有任何标签,它将失败。

所以你可能需要先准备好目标文件,让它有标签。

from mutagen import File
from mutagen.flac import FLAC
from mutagen.easyid3 import EasyID3
from mutagen.id3 import ID3, ID3NoHeaderError

def convert_tags(f1,f2):
    # f1: full path to file copying tags from
    # f2: full path to file copying tags to
    # http://stackoverflow.com/questions/8873364/linux-script-to-transfer-id3-tags-from-flac-to-mp3
    # http://stackoverflow.com/a/18369606/2455413
    try:
        meta = EasyID3(f2)
    except ID3NoHeaderError:
        meta = File(f2, easy=True)
        meta.add_tags()
        meta.save()
    from_f = FLAC(f1)
    to_f = EasyID3(f2)
    for tag in from_f:
        if tag in EasyID3.valid_keys.keys(): to_f[tag] = from_f[tag]
    to_f.save()
    return
于 2016-11-19T13:35:18.480 回答
3

这是使用 ffmpeg 的另一种解决方案。例如。只需在 $HOME/.bashrc 中定义一个 bash 函数:

flac2mp3() 
{ 
  ffmpeg -i "$1" -ab 320k -map_metadata 0 -id3v2_version 3 "$(basename "$1" flac)mp3"
}
于 2021-07-27T21:12:58.307 回答