Ich habe eine Menge Stereo-MP3s, die ich in Mono umwandeln möchte. Wie geht das am besten? Ich würde etwas bevorzugen, mit dem ich sie stapelweise verarbeiten kann. Ich möchte die Qualität so nah wie möglich am Original halten. Meine Dateien haben auch unterschiedliche Bitraten, daher möchte ich nicht alle Dateien auf 320 kpbs bringen, wenn einige nur 128 kpbs haben.
Gibt es außerdem eine schnelle Möglichkeit, zu sehen, welche Dateien in meiner gesamten Bibliothek Stereo sind?
Antwort1
Die Konvertierung von Stereo in Mono würde eine Neukodierung erfordern, daher wäre es sinnlos, die gleiche Bitrate beizubehalten. Tatsächlich wird die Konvertierung einer 128 kbit/s MP3 in eine neue 128 kbit/s MP3 eine furchtbar schlechte Qualität ergeben, selbst wenn die zweite mono ist (und daher eine niedrigere Bitrate für die gleiche subjektive Qualität erfordert).
Im Allgemeinen würde ich für MP3 eine Einstellung mit variabler Bitrate (VBR) verwenden, die auf eine bestimmte Qualität abzielt und den Encoder die gewünschte Bitrate einstellen lässt (komplett stummes Audio benötigt eine niedrigere Bitrate als Walgesang, der wiederum eine niedrigere Bitrate als Dubstep benötigt). Über die Befehlszeile kann ffmpeg Audio mit der Option in Mono umwandeln -ac 1
, wie folgt:
ffmpeg -i input.mp3 -c:a libmp3lame -q:a 2 -ac 1 output.mp3
Sehendiese Seitefür eine Anleitung zur Verwendung von -q:a
. Beachten Sie, dass die Tabelle auf dieser Seite auf Stereo-Audio abzielt; die tatsächlichen Bitraten, die Sie sehen, werden etwas niedriger sein. Normalerweise empfehle ich 3-4, aber da Sie von MP3s und nicht von einer Original-CD kodieren, sollten Sie etwas höher zielen.
Dies lässt sich natürlich sehr einfach automatisieren. Unter Linux/OSX/anderen UNIX-ähnlichen Systemen können Sie ein Verzeichnis mit MP3s wie folgt konvertieren:
for f in *.mp3; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 -ac 1 mono-"$f"; done
So gehen Sie rekursiv vor:
find . -type f -name "*.mp3" -exec ffmpeg -i '{}' -c:a libmp3lame -q:a 2 -ac 1 mono-'{}' \;
Wenn Sie GNU Parallel und einen Multi-Core-Rechner haben, könnte dies für Sie hilfreich sein:
find . -type f -name "*.mp3" | parallel ffmpeg -i {} -c:a libmp3lame -q:a 2 -ac 1 mono-{}
Antwort2
Nun, es gibt mehrere Möglichkeiten, aber lassen Sie mich Ihnen diejenigen zeigen, die tatsächlich funktionieren. Sie können verwendenKühnheit, eine kostenlos verfügbare Software dafür.
Bitte sehen Sie sich das aneHows ArtikelInformationen zum Konvertieren von MP3 in Mono finden Sie hier.
Antwort3
Lame kann Dateien mit dem Schalter -m in Mono konvertieren, wobei der Vorteil darin besteht, dass Meta-Tags erhalten bleiben (ich bin nicht sicher, ob ffmpeg das auch kann).
Hier ist ein etwas kompliziertes Beispiel, das die Bitrate einer MP3-Datei bestimmt, bevor sie mit einer der variablen Bitrate-Qualitätsoptionen transkodiert wird.
Katze s2mono.sh #!/bin/bash mp3-Datei=$@ mp3size () { du -sk "$1" | awk '{drucke $1 * 8 }' } mp3länge () { id3info "$1" | \ awk '/=== TLEN/ { wenn ($NF > 0) { len=int( $NF/1000) }} END {print len}' } mp3rate () { echo $(( `mp3size "$1"` / `mp3length "$1"` )) } bitrate=`mp3rate "$mp3file"` wenn [ $bitrate -gt 155 ]; dann VBR='-V4'; fi wenn [ $bitrate -gt 190 ]; dann VBR='-V2'; fi wenn [ $bitrate -gt 249 ]; dann VBR='-V0'; fi Echo-Downsampling von $mp3-Datei lame --silent $VBR -mm --mp3input "$mp3file" \ "$(Basisname "$mp3file" .mp3 )-mono.mp3"
Ich habe dies in einem Ordner ausgeführt, in dem die Gesamtgröße aller MP3s im Stereoformat 80 MB betrug. Die resultierenden Mono-MP3s belegten nur 32 MB.
find . -iname \*mp3 -print0 |xargs -0 -L1 sh s2mono.sh
(...)
du -skc *-mono.mp3| tail -n1
32376 total
find . -iname \*mp3 |grep -ve '-mono' |\
while read f; do du -sk "$f" ;done |\
awk '{ tot+=$1} END{print tot}'
80112
Was den letzten Teil Ihrer Frage betrifft, file
werde ich Folgendes tun:
find /R/audio/muzica/_ripped/wav -exec file {} \+ |grep Monaural
Antwort4
Das ist die einfachste Methode, die ich gefunden habe
für ich in.mp3; führen Sie ffmpeg -i "$i" -ac 1 "${i% aus.} - mono.mp3"; fertig
Mit der gleichen Methode können auch andere Audioformate in MP3 konvertiert werden, sowie in Mono.
für ich in.m4b; führen Sie ffmpeg -i "$i" -ac 1 "${i% aus.} - mono.mp3"; fertig