Die effizienteste Möglichkeit, eine große ALAC-Bibliothek in MP3 zu konvertieren

4684
Leda

Ich habe eine große Bibliothek mit CDs, die ich als Hauptmusikbibliothek verwende. Ich möchte eine Kopie dieser Bibliothek in vbr mp3 für tragbare Geräte umwandeln, jedoch möchte ich dies nicht auf meinem Laptop tun, da ungefähr 650 GB Musik vorhanden sind und ich zu viel unterwegs bin, um meinen Laptop sitzen zu lassen Für die Zeit würde es notwendig sein, meine gesamte Bibliothek umzuwandeln. Mein Freund hat Serverplatz (Debian Squeeze) und er ist bereit, mich für ein oder zwei Wochen zur Verfügung zu stellen, indem er meine Bibliothek konvertiert. Was wäre der beste Nutzen oder Weg, um dies zu tun. Für einzelne Songs oder einzelne Alben verwende ich einfach so etwas

#!/bin/sh for file in "$@" ; do name=`echo "$file" | sed -e "s/.mp4$//g"` ffmpeg -i "$file" -ac 2 -f wav - | lame --preset standard - "$name.mp3" done 

Ich bin sicher, dass es einen viel effizienteren Weg gibt, dies zu tun. Meine Musik ist derzeit als "Artist - Albums - Tracks" organisiert und ich möchte, dass die Ausgabe dies widerspiegelt.

5
Wie viele CPUs / Kerne hat der Server? (LAME unterstützt nur Single-Threaded-Codierung, auf Quad-Core können Sie jedoch vier Songs gleichzeitig codieren.) grawity vor 13 Jahren 0
Auf dem Server stehen 4 CPU-Kerne zum Transcodieren zur Verfügung. Leda vor 13 Jahren 0

2 Antworten auf die Frage

4
grawity

In den folgenden Beispielen ~/Music/wird als Quellverzeichnis angenommen.


Erstellen Sie ein convert.shSkript:

$ cat > convert #!/bin/bash input=$1 output=$.mp3 ffmpeg -i "$input" -ac 2 -f wav - | lame -V 2 - "$output" [Ctrl-D] $ chmod +x convert 
  • Wenn Sie möchten, dass ein anderer Speicherort für die Ausgaben verwendet wird, fügen Sie Folgendes hinzu ffmpeg:

    output=~/Converted/$ mkdir -p "$" 

Wandeln Sie mit parallelvon moreutils :

$ find ~/Music/ -type f -name '*.mp4' -print0 | xargs -0 parallel ./convert -- 

Nicht zu verwechseln mit GNU parallel, das eine andere Syntax verwendet:

$ find ~/Music/ -type f -name '*.mp4' | parallel ./convert 
2
Ole Tange

Mit GNU Parallel benötigen Sie nicht einmal das Skript:

find ~/Music/ -type f -name '*.mp4' | parallel ffmpeg -i {} -ac 2 -f wav - \| lame -V 2 - {.}.mp3 

Dasselbe kann ohne Verwendung von Lame erreicht werden, vorausgesetzt, Ihre Version von ffmpeg wird mit aktiviertem libmp3lame kompiliert (die meisten Versionen sind):

find ~/Music/ -type f -name '*.mp4' | parallel ffmpeg -i {} -c:a libmp3lame -q:a 2 {.}.mp3 

Sie können auch -inameanstelle des -nameSuchbefehls verwenden, um Übereinstimmungen ohne Berücksichtigung der Groß- und Kleinschreibung zu erhalten (so werden alle * .mp4 und * .MP4 und alle Variationen der Fälle abgerufen). Auch -ac 2ist nicht unbedingt in der zweiten Version erforderlich; MP3 unterstützt ohnehin nur maximal zwei Kanäle. Daher konvertiert ffmpeg das Audiosignal bei Bedarf automatisch in zwei Kanäle. Dadurch müssen Sie keinen zusätzlichen sinnlosen Kanal zu Ihrem Mono-Audio hinzufügen.

In dieser ffmpeg-Wiki-Seite finden Sie einige grundlegende Informationen zum Verschlüsseln von MP3-Dateien und in diesem Handbuch zu hydrogenaudio weitere Informationen.

Wenn Sie über andere Maschinen verfügen, auf die Sie ssh setzen können (z. B. ist Ihr Laptop in den Nächten verfügbar), kann GNU Parallel auch diese CPUs verwenden. Schauen Sie sich die Beispiele von --trc (zum Übertragen der Dateien) und --retries (um sich darum zu kümmern, dass der Laptop tagsüber nicht erreichbar ist) an. Siehe http://www.gnu.org/software/parallel/man.html#example__using_remote_computers

In den Intro-Videos erfahren Sie mehr: http://www.youtube.com/watch?v=OpaiGYxkSuQ