Wie kann ich .flac mit ffmpeg in .mp3 konvertieren und dabei alle Metadaten beibehalten (dh Vorbis-Kommentare in .flac-Dateien in ID3v2-Metadaten von .mp3 konvertieren)?
Wie kann ich .flac mit ffmpeg in .mp3 konvertieren und dabei alle Metadaten beibehalten (dh Vorbis-Kommentare in .flac-Dateien in ID3v2-Metadaten von .mp3 konvertieren)?
Antworten:
Der folgende Befehl bietet eine hohe Qualität für MP3 (320 kbit / s), und Metadaten aus FLAC-Dateien werden in das ID3v2-Format konvertiert, das in MP3-Dateien enthalten sein kann:
ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
ffmpeg
3.2 kopiert Metadaten automatisch aus FLAC in ID3v2, ohne dass dies angegeben werden muss -map_metadata 0 -id3v2_version 3
, obwohl es nicht in ID3v1-Tags kopiert wird. Ich benutze dafür ein separates Tool.
Perfekte Antwort oben. Ich benutze es zusammen mit find, um mit diesem Befehl alle FLAC-Dateien in einem Teilbaum zu iTunes hinzuzufügen
find . -name "*.flac" -exec ffmpeg -i {} -ab 160k -map_metadata 0 -id3v2_version 3 {}.mp3 \;
Um die resultierenden Dateien automatisch zu iTunes hinzuzufügen, rufen Sie das iTunes-Importverzeichnis mit auf
find ~/Music/ -name "Automatically Add*"
Ergebnis zB
/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized
Dann laufen zB
find . -name "*.mp3" -exec mv {} "/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized/" \;
So fügen Sie automatisch alle konvertierten Titel zu iTunes hinzu
Wenn Sie etwas Platz sparen möchten, probieren Sie die Empfehlung von hydraud.io :
Sehr hohe Qualität: HiFi, zu Hause oder die leise Hören, mit dem besten Dateigröße
-V0 (~245 kbps)
,-V1 (~225 kbps)
,-V2 (~190 kbps)
oder-V3 (~175 kbps)
empfohlen. Diese VBR-Einstellungen führen normalerweise zu transparenten Ergebnissen. Hörbare Unterschiede zwischen diesen Voreinstellungen können bestehen, sind jedoch selten.
Quelle: http://wiki.hydrogenaud.io/index.php?title=LAME
Wenn Sie diese Option in ffmpeg verwenden möchten, sollten Sie den -q:a 0
Alias verwenden.
Kontrollieren Sie die Qualität mit
-qscale:a
(oder dem Alias-q:a
). Die Werte sind encoderspezifisch, daher liegt der Bereich für libmp3lame zwischen 0 und 9, wobei ein niedrigerer Wert eine höhere Qualität darstellt. 0-3 führt normalerweise zu transparenten Ergebnissen, 4 (Standard) sollte nahe an der Wahrnehmungstransparenz liegen und 6 erzeugt eine "akzeptable" Qualität. Die Option-qscale:a
wird der-V
Option im eigenständigen lahmen Befehlszeilenschnittstellentool zugeordnet.
Quelle: https://trac.ffmpeg.org/wiki/Encode/MP3
Wenn Sie auch ID3v1-Metatags möchten, sollten Sie den -write_id3v1 1
Parameter hinzufügen .
Mein letzter Befehl lautet also:
ffmpeg.exe -y -i input.flac -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 -write_id3v1 1 output.mp3
Ich habe den folgenden Befehl getestet, um eine infile.flac
Datei zu konvertieren outfile.mp3
:
ffmpeg -i infile.flac -q:a 0 outfile.mp3
Ab Ubuntu 16.04 scheint der obige Befehl (die meisten? Alle?) Die Metadaten zu kopieren.
-q:a 0
sagt ffmpeg
, die höchste Qualität VBR zu verwenden.
Allerdings ffmpeg
wurde mein Albumcover von jpeg
bis transkodiert png
, was die Größe des Cover-Designs erhöhte.
Stream mapping:
Stream #0:1 -> #0:0 (mjpeg (native) -> png (native))
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
(Ich denke , die obige Umwandlung Art macht Sinn , wie gegeben ffmpeg
Werke .)
Nach einigem Graben fand ich die -c:v copy
Option, die angibt, dass der Videostream kopiert und nicht transkodiert werden soll. Der vollständige Befehl lautet:
ffmpeg -i infile.flac -c:v copy -q:a 0 outfile.mp3
Der obige Befehl führt zu:
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
Um alle flac-Dateien in verschachtelten Ordnern rekursiv in MP3 zu konvertieren, habe ich diesen Befehl verwendet:
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"' \;
Es wird ein Ordner mit dem Namen "mp3" in dem Ordner mit flac-Dateien erstellt und im mp3-Ordner werden relative mp3-Dateien mit einer Bitrate von 320 kbps gespeichert, ohne dass die alte Dateierweiterung im Namen bleibt.
Einzeiler zum Konvertieren aller .flac
Dateien .mp3
in ein einziges Verzeichnis unter Beibehaltung der meisten Metadaten:
for file in *.flac; do ffmpeg -i $file -q:a 0 ${file:r}.mp3; done
(Hinweis: ${file:r}
Entfernt die Erweiterung des angegebenen Dateipfads.)
$file
wie "$file"
.
:r
scheint ein zsh
Modifikator zu sein, der nicht funktioniert bash
. In Bash könnten Sie ersetzen "${file:r}.mp3"
mit "${file%.flac}.mp3"
.
${file%.*}
Ich weiß, dass dies nicht gefragt wurde, aber wenn man bedenkt, dass einer der Gründe dafür (zumindest wollte ich das tun) darin besteht, dass die Musik in Apple iTunes importiert werden kann, das FLAC nicht unterstützt. In diesem Fall ist es sinnvoller, FLAC in das verlustfreie Format m4a von Apple zu konvertieren. Ich habe diesen Befehl verwendet, um alle Dateien im aktuellen Ordner zu konvertieren und dabei ähnliche Dateigrößen beizubehalten.
find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;
Dieses Skript flac2mp3.shffmpeg
konvertiert einen Ordnerbaum von FLAC-Dateien in einen anderen Ordnerbaum von MP3-Dateien. Cover Art ist enthalten, falls vorhanden. Sie können eine CORES
Variable festlegen , um Hintergrundjobs zu erstellen und mehrere Dateien gleichzeitig zu konvertieren.
ffmpeg
Verwendung von Cli bei Super User stellen sollten . Der Stapelüberlauf ist nur für Fragen zur Programmierung vorgesehen. Außerdem unterstützt FLAC offiziell nur Vorbis-Kommentare , daher gehe ich davon aus, dass Sie in ID3v2 konvertieren möchten, anstatt "behalten".