4

私のメディアサーバーでは、FLACファイルからMP3にタグを転送する方法を探しています。

bashスクリプトでは、metaflacを使用してローカル変数にタグを抽出できますが、mp3にid3v2のタグを付けると、国別文字が失われるようです(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 に答える