Wie kann ich den Bruchteil einer Sekunde vom Anfang einer bereits codierten MP3-Datei abschneiden, ohne die MP3-Datei erneut transcodieren zu müssen?

Wie kann ich den Bruchteil einer Sekunde vom Anfang einer bereits codierten MP3-Datei abschneiden, ohne die MP3-Datei erneut transcodieren zu müssen?

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 wiefseekund 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 copyOption, 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 -ssauf festzulegen 0.125und dann einfach die Eingabe und Ausgabe mit einem „ copySet 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

verwandte Informationen