Konvertieren Sie .flac mit ffmpeg in .mp3, wobei alle Metadaten erhalten bleiben
85
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)?
Bitte beachten Sie, dass Sie beim nächsten Mal Fragen zur ffmpegVerwendung 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".
Llogan
Ok, ich habe meine Frage behoben. Ich habe hier gefragt, weil ich solche Fragen auf StackOverflow gesehen habe (z. B. dies oder das ) und angenommen habe, dass es interessant sein könnte, mein Wissen zu teilen. Außerdem sehe ich, dass es ein ffmpeg-Tag gibt. Warum also nicht meine Lösung hier teilen? ffmpeg wird in vielen Anwendungen von vielen Entwicklern verwendet.
Vito Gentile
2
Das ffmpeg- Tag lautet: "Fragen zur interaktiven Verwendung des FFmpeg-Befehlszeilentools sollten bei Super User gestellt werden." Es ist keine große Sache, aber ich wollte nur darauf hinweisen, da es meiner Meinung nach hier zu viele Fragen außerhalb des Themas gibt.
Llogan
Antworten:
146
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:
Es ist erwähnenswert, dass "ffmpeg" möglicherweise durch "avconv" ersetzt werden muss.
Schockbrenner
5
FWIW ffmpeg3.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.
Dai
1
Die Texte werden immer noch nicht kopiert
user151496
1
Teilt es Flac, wenn es mehrere Teile gibt?
Artyom
1
@Artyom Sie sollten wahrscheinlich die Cue- Datei zusammen mit Ihrem Flac haben, wo die Split-Punkte markiert sind. Wenn ja, können Sie shnsplit (Konsole) oder flacon (GUI) verwenden, um Ihre Datei zu teilen und die Teile in MP3 zu konvertieren. Wenn Sie nur einen einzigen Flac haben , können Sie entweder einen Cui dafür schreiben oder die Optionen -ss und -t von ffmpeg verwenden , um jeden Song auszuschneiden.
Herman Yanush
55
Perfekte Antwort oben. Ich benutze es zusammen mit find, um mit diesem Befehl alle FLAC-Dateien in einem Teilbaum zu iTunes hinzuzufügen
Anekdote: Alle Benutzer in unserem Unternehmen haben Namen von Sternen, abgekürzt mit 3-5 Zeichen. Meins ist "sirius", kurz sir;)
user2707001
Nicht erkannte Option 'Name'.
MonsterMMORPG
13
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.
Wenn Sie diese Option in ffmpeg verwenden möchten, sollten Sie den -q:a 0Alias 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:awird der -VOption im eigenständigen lahmen Befehlszeilenschnittstellentool zugeordnet.
Nach einigem Graben fand ich die -c:v copyOption, die angibt, dass der Videostream kopiert und nicht transkodiert werden soll. Der vollständige Befehl lautet:
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.
Zitieren Sie einfach die Variable $filewie "$file".
Chazy Chaz
:rscheint ein zshModifikator zu sein, der nicht funktioniert bash. In Bash könnten Sie ersetzen "${file:r}.mp3"mit "${file%.flac}.mp3".
Mivk
um nur den Dateinamen aus der Datei ${file%.*}
anzuzeigen
2
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.
Nicht erkannte Option 'Name'. Fehler beim Teilen der Argumentliste: Option nicht gefunden
MonsterMMORPG
@MonsterMMORPG Sie haben wahrscheinlich die Eingabe der verpasst. nach dem Befehl find. Das . weist find an, im aktuellen Ordner zu suchen, und -name weist an, nach passenden Dateinamen zu suchen.
Dhiraj Gupta
0
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 CORESVariable 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".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:
quelle
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
Um die resultierenden Dateien automatisch zu iTunes hinzuzufügen, rufen Sie das iTunes-Importverzeichnis mit auf
Ergebnis zB
Dann laufen zB
So fügen Sie automatisch alle konvertierten Titel zu iTunes hinzu
quelle
Wenn Sie etwas Platz sparen möchten, probieren Sie die Empfehlung von hydraud.io :
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.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:
quelle
Ich habe den folgenden Befehl getestet, um eine
infile.flac
Datei zu konvertierenoutfile.mp3
:Ab Ubuntu 16.04 scheint der obige Befehl (die meisten? Alle?) Die Metadaten zu kopieren.
-q:a 0
sagtffmpeg
, die höchste Qualität VBR zu verwenden.Allerdings
ffmpeg
wurde mein Albumcover vonjpeg
bis transkodiertpng
, was die Größe des Cover-Designs erhöhte.(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:Der obige Befehl führt zu:
quelle
Um alle flac-Dateien in verschachtelten Ordnern rekursiv in MP3 zu konvertieren, habe ich diesen Befehl verwendet:
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.
quelle
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.)quelle
$file
wie"$file"
.:r
scheint einzsh
Modifikator zu sein, der nicht funktioniertbash
. 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 \;
quelle
Dieses Skript flac2mp3.sh
ffmpeg
konvertiert einen Ordnerbaum von FLAC-Dateien in einen anderen Ordnerbaum von MP3-Dateien. Cover Art ist enthalten, falls vorhanden. Sie können eineCORES
Variable festlegen , um Hintergrundjobs zu erstellen und mehrere Dateien gleichzeitig zu konvertieren.quelle