Ich verwende seit langer Zeit eine relativ klobige Technik, die Audacity mit einem LAME-Plugin einbezieht. Ich denke, das ist in Ordnung, aber der Reiz des Terminal-Ansatzes besteht darin, dass ich mit meinen [options]
Binärdateien etwas feiner arbeiten und vielleicht aktuellere verwenden kann.
Außerdem altert mein MacBook jetzt ein wenig und wenn ich eine unnötige Benutzeroberfläche loswerden kann, umso besser.
Danke im Voraus.
Antworten:
Konvertieren einer einzelnen Datei ohne Beibehaltung von Tags
--decode --stdout
=-dc
lame - $outfile
= Eingabe von STDIN--preset extreme
= ~ 245 kbit / s VBREin Shell-Skript, das einige ID3-Tags beibehält
Um das Skript zu benutzen, speichern Sie es einfach irgendwo
~/bin/flac2mp3
und machen es mit ausführbarchmod +x ~/bin/flac2mp3
.Dies würde alle flac-Dateien in Ihrem Musikordner konvertieren:
Oder etwas schneller, da flac2mp3 nur einmal aufgerufen wird:
quelle
${file%.flac}.mp3
ist großartig! Früher habe ich verwendet${x:: ${#x}-3}m4a
, um den Dateinamen des Songs von .wav in .m4a zu ändern. Es ist großartig, einen Weg zu sehen, der viel einfacher aussieht.!/bin/sh file="$1" outfile=${file%.flac}.mp3 eval $(metaflac --export-tags-to - "$file" | sed "s/=\(.*\)/='\1'/") flac -cd "$file" | lame --preset standard \ --add-id3v2 --tt "$TITLE" --ta "$ARTIST" --tl "$ALBUM" \ --ty "$DATE" --tn "$TRACKNUMBER" --tg "$GENRE" \ - "$outfile"
ffmpeg würde standardmäßig Tags (aber keine Coverbilder) beibehalten.
-aq 1
entspricht-V 1
in lahm.-acodec libfaac
würde die Dateien in AAC konvertieren:quelle
Ich habe genommen, was ihr habt, habe es dann aber noch schneller gemacht, indem ich
xargs
die Jobs parallelisiert habe.Dann ist dies das Skript von oben / usr / local / bin / flac2mp3
und hier sind einige Statistiken für die Leistungssteigerung durch Parallelität.
Sie können sehen, dass es auch meine CPUs effektiver nutzte, ich habe ein Intel i7, so dass 8 wahrscheinlich die richtige Anzahl von Prozessen ist.
quelle
Ich habe diesen Thread gefunden, als ich versucht habe, MP3s direkt aus FLAC-Quelldateien zu codieren. Boehjs Antwort bietet eine anständige Skriptoption , aber ich persönlich bevorzuge FFmpeg. Dies ist also das Bash-Skript, das ich für diese Aufgabe entwickelt habe. Getestet und funktioniert hervorragend in macOS Sierra (10.12.2).
Sporteln: Sie sollten
ffmpeg
undlame
auf Ihrem Mac installiert ist . Am einfachsten geht das über Homebrew. Stellen Sie zunächst sicher, dass Homebrew folgendermaßen installiert ist:Führen Sie dann diesen Befehl aus, um zu installieren
ffmpeg
undlame
:Sobald dies erledigt ist, können Sie dieses Skript ausführen. Dieses Skript sucht nach FLAC-Dateien im Verzeichnis. Dies
path/to/FLAC/files
kann jedoch einfach geändert werden,.
wenn sich die FLAC-Dateien in dem Verzeichnis befinden, in dem Sie dieses Skript ausführen. Bei der Ausführung wird einmp3/
Unterverzeichnis erstellt, in dem sich alle MP3-Dateien befinden platziert.Einige Notizen zu Dingen, die ich in „The Hard Way ™“ gelernt habe, damit andere von dem profitieren können, was ich in diesem Skript anders gemacht habe als andere im Internet.
grep
Befehlen zum Parsen von Tags (mit FFprobe, das mit FFmpeg installiert wurde) wird die Groß- und Kleinschreibung nicht berücksichtigt , wenn die-i
Option aktiviert wirdgrep -i
.cut
Befehl ist jetzt darauf beschränkt, die Ausgabe nur basierend auf dem ersten=
in einem Tag-Namen mit der-f 2-
Option zu teilen, die den Befehl ausführtcut -d '=' -f 2-
. Zum Beispiel hat Pavement einen Song mit dem Titel "5-4 = Unity" und wenn nur der zweite Chunk per Cut ausgewählt worden wäre, wäre dieser Titel auf "5-4" gekürzt worden.sed
denen der führenden Nullen entledigt:sed 's/^0*//'
.-f wav
und das würde die FFmpeg-Ausgabe tatsächlich komprimieren, was in einer Pipe-Konfiguration, in der LAME sie neu codieren wird, keinen Sinn macht. Stattdessen wird hier die Ausgabe festgelegt, bei-f s16le -acodec pcm_s16le
der es sich im Grunde um eine RAW-Ausgabe handelt. Perfekt, um Audio an einen anderen Prozess wie diesen weiterzuleiten.-r
Option hinzufügen .--tt
,--ta
,--tl
,--tn
und--tg
ID3v2 - Tag - Optionen für LAME. Wenn Audio von einem Prozess in LAME gestreamt / weitergeleitet wird, gehen die Metadaten aus der Quelldatei verloren. Eine vorgeschlagene Option ist FFmpeg bekommt die Metadaten in eine Textdatei zu speichern , indem Sie die Option mit der Einstellung-f ffmetadata "[metadata filename here]"
und dann FFmpeg wieder mit dem etwas wie folgt ausgeführt werden :-i "[metadata filename here]" -map_metadata 1 -c:a copy [destination mp3 file] id3v2_version 3 -write_id3v1 1
. Das funktioniert, aber beachten Sie die Anforderung für eine Zieldatei. FFmpeg importiert anscheinend nur Metadaten, wenn es die Datei kopieren kann. Dies scheint ein sehr verschwenderischer Prozess zu sein. Mit FFprobe Werte zu erhalten und sie dann in LAME Einstellung mit--tt
,--ta
,--tl
,--tn
und--tg
Optionen besser funktionieren; Alle Metadaten sind an Ort und Stelle geschrieben, so dass doppelte Dateien generiert werden müssen.quelle