web-dev-qa-db-ja.com

ffmpegで.flacを.mp3に変換し、すべてのメタデータを保持

どうすれば。flacから.mpに変換できますか?

68
Vito Gentile

次のコマンドは、.mp3(320 kbps)で高品質を維持し、.flacファイルのメタデータはID3v2形式に変換されます。これは.mp3ファイルに含めることができます。

ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
118
Vito Gentile

上記の完璧な答え。このコマンドを使用して、サブツリー内のすべてのFLACファイルをiTunesに追加するために、findと一緒に使用します

find . -name "*.flac" -exec ffmpeg -i {} -ab 160k -map_metadata 0 -id3v2_version 3 {}.mp3 \;

結果のファイルをiTunesに自動的に追加するには、iTunesのインポートディレクトリを取得します。

find ~/Music/ -name "Automatically Add*"

結果.

/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized

次に、実行します.

find . -name "*.mp3" -exec mv {} "/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized/" \;

変換されたすべてのトラックをiTunesに自動的に追加します。

43
user2707001

スペースを少し節約したい場合は、 hydrogenaud.io の推奨事項を試してください。

非常に高品質:HiFi、ホーム、または静かなリスニング、最適なファイルサイズ-V0 (~245 kbps)-V1 (~225 kbps)-V2 (~190 kbps)または-V3 (~175 kbps)が推奨されます。通常、これらのVBR設定は透過的な結果を生成します。これらのプリセットには可聴な違いが存在する場合がありますが、まれです。

ソース: http://wiki.hydrogenaud.io/index.php?title=LAME

Ffmpegでこのオプションを使用する場合は、-q:a 0エイリアスを使用する必要があります。

-qscale:a(またはエイリアス-q:a)で品質を制御します。値はエンコーダー固有であるため、libmp3lameの範囲は0〜9で、値が小さいほど品質が高くなります。通常、0〜3は透明な結果を生成し、4(デフォルト)は知覚的な透明度に近く、6は「許容できる」品質を生成します。オプション-qscale:aは、スタンドアロンlameコマンドラインインターフェイスツールの-Vオプションにマップされます。

ソース: https://trac.ffmpeg.org/wiki/Encode/MP

ID3v1メタタグも必要な場合は、-write_id3v1 1パラメーターを追加する必要があります。

私の最後のコマンドは次のとおりです。

ffmpeg.exe -y -i input.flac -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 -write_id3v1 1 output.mp3
12
wiktor

infile.flacファイルをoutfile.mp3に変換する次のコマンドをテストしていました。

ffmpeg  -i infile.flac  -q:a 0  outfile.mp3

Ubuntu 16.04の時点で、上記のコマンドはメタデータ(ほとんど?すべて?)をコピーしているようです。

-q:a 0は、ffmpegに最高品質のVBRを使用するように指示します。

ただし、ffmpegは私のアルバムアートをjpegからpngにトランスコードしていたため、カバーアートのサイズが大きくなりました。

Stream mapping:
  Stream #0:1 -> #0:0 (mjpeg (native) -> png (native))
  Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))

(上記の変換は、理にかなっていると思います ffmpegの仕組みを考えると 。)

掘り下げた後、-c:v copyオプションが見つかりました。このオプションは、ビデオストリームをトランスコードするのではなくコピーすることを指定します。完全なコマンドは次のとおりです。

ffmpeg  -i infile.flac  -c:v copy  -q:a 0  outfile.mp3

上記のコマンドの結果:

Stream mapping:
  Stream #0:1 -> #0:0 (copy)
  Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
8
mpb

ネストされたフォルダー内のすべてのflacファイルをmp3で再帰的に変換するには、次のコマンドを使用しました。

find '~/Music/' -iname '*.flac' -exec bash -c 'D=$(dirname "{}"); B=$(basename "{}"); mkdir "$D/mp3/"; ffmpeg -i "{}" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/${B%.*}.mp3"' \;

Flacファイルを含むフォルダー内に「mp3」という名前のフォルダーを作成し、mp3フォルダー内に、名前に古いファイル拡張子を保持せずに、320kbpsのビットレートで相対的なmp3ファイルを保存します。

3
Riccardo Volpe

単一のディレクトリですべての.flacファイルを.mp3に変換し、mostメタデータを保持するワンライナー:

for file in *.flac; do ffmpeg -i $file -q:a 0 ${file:r}.mp3; done

(注:${file:r}は、指定されたファイルパスの拡張子を削除します)

ffmpeg: flac to mp3

2
woudsma

私はこれが尋ねられなかったことを知っていますが、これが行われた理由の1つ(少なくともそれが私がやりたかったこと)を考えると、音楽をApple iTunesにインポートできるからですFLACをサポートします。そのような場合、FLACをApple独自のロスレス形式m4aに変換する方が理にかなっています。このコマンドを使用して、現在のフォルダー内のすべてのファイルを変換しながら、同様のファイルサイズを保持しました。

find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;

1
Dhiraj Gupta

この flac2mp3.sh スクリプトは、ffmpegを使用してFLACファイルのフォルダーツリーをMP3ファイルの別のフォルダーツリーに変換します。存在する場合、カバーアートが含まれています。 CORES変数を設定して、一度に複数のファイルを変換するバックグラウンドジョブを作成できます。

0
Rick O'Sullivan