
Ich verwende macOS 10.3.6 (High Sierra) und hatte vor einiger Zeit eine 4-CD-Box mit Musik, habe die Titel in MP3 gerippt und die Dateien einfach auf meinem System gespeichert. Ich musste jeden der über 100 Titel manuell markieren und mit Metadaten versehen (fragen Sie nicht) und habe die Original-CDs vor einiger Zeit auch entsorgt (fragen Sie auch nicht), sodass ich sie nicht einfach erneut rippen kann.
Also, hier ist das Problem: Anscheinend fügte das MP3-Tool, das ich damals verwendete, am Anfang jedes Titels ein „Knackgeräusch“ von einem Sekundenbruchteil hinzu. Ich war mir damals nicht bewusst – oder habe nicht darauf geachtet –, aber jeder der über 100 Titel hat dieses nervige Knackgeräusch gleich am Anfang.
Ich habe diesen Thread auf Stack Overflow gelesen: „Klickgeräusch am Anfang bei der Nutzung von LAME” und obwohl der Ratschlag solide ist – er erklärt, wie LAME manchmal versehentlich den Header einer Audiodatei als reines Audio kodieren könnte –, ist die Realität, dass die vorgestellten Lösungen mich dazu zwingen würden, die bereits kodierte MP3 über etwas wiefseek
und dann die MP3 erneut kodieren (auch bekannt als: transkodieren), was alles andere als ideal ist.
Gibt es also eine Möglichkeit, etwa 1/8 Sekunde von diesen bereits codierten MP3s abzuschneiden, um das „Knackgeräusch“ zu beseitigen und eine Transcodierung der MP3s zu vermeiden?
Ich suche speziell nach einer relativ einfachen macOS-basierten Lösung, die höchstens die Installation eines neuen Tools (falls erforderlich) über Homebrew erfordert. Ich verlange kein vollständiges Skript, aber zumindest ein Tool und einen Konfigurationstipp, der mich in die richtige Richtung weist.
Antwort1
Okay, ich habe es geschafft, das Problem mithilfe der Magie von FFmpeg zu lösen (das ich bereits über Homebrew auf macOS installiert habe). Insbesondere das-ss
(auch: Such-)Parameterin Verbindung mit der copy
Option, die auf den Audiostream angewendet wird, funktioniert es wie am Schnürchen! Der Befehl kann folgendermaßen zusammengefasst werden:
ffmpeg -ss 0.125 -i "input.mp3" -acodec copy "output.mp3"
Es genügt, den Wert -ss
auf festzulegen 0.125
und dann einfach die Eingabe und Ausgabe mit einem „ copy
Set to the“ anzugeben.-acodec
Und da ich – wie in der Frage erklärt – in meinem Fall über 100 Dateien zu verarbeiten habe, habe ich ein einfaches Bash-Skript erstellt, das alle MP3s findet, bei denen 1/8 des Anfangsaudios gekürzt werden sollte, und sie in ein mp3/
Unterverzeichnis speichert. Ich hoffe, das hilft jemandem in einer ähnlichen Situation!
find -E "path/to/audio/files" -type f -iregex ".*\.(MP3)$" |\
while read full_audio_filepath
do
# Break up the full audio filepath stuff into different directory and filename components.
audio_dirname=$(dirname "${full_audio_filepath}");
audio_basename=$(basename "${full_audio_filepath}");
audio_filename="${audio_basename%.*}";
# Set the MP3 directory.
mp3_dirpath="${audio_dirname}/mp3";
mp3_filepath="${mp3_dirpath}/${audio_filename}.mp3";
# Create the child MP3 directory.
mkdir -p "${mp3_dirpath}";
# And here is where the magic happens.
ffmpeg -y -v quiet -ss 0.125 -i "$full_audio_filepath" -acodec copy "$mp3_filepath" < /dev/null;
done