So legen Sie die Version einer MP3-Ausgabedatei in FFmpeg fest

604
samsam114

Ich möchte eine Stereo-MP3-Datei mit FFmpeg in zwei Mono-MP3-Dateien aufteilen, sodass jede der Monodateien MPEG-1 Layer 3 Version 1 ist:

Ich benutze diesen Befehl:

ffmpeg -i input.mp3 -map_channel 0.0.0 left.mp3 -map_channel 0.0.1 right.mp3 

Die Eingabedatei ist MPEG-1 Layer 3 Version 1, die Ausgänge sind jedoch MPEG-1 Layer 3 Version 2.

0
Zuerst ist dein Englisch in Ordnung! Aber nur eine Klarstellung: Sie sagen "MPEG-1 Version 1" und "MPEG-1 Version 2", meinen aber "MPEG-1 Audio Layer I" und "MPEG-1 Audio Layer II?" (Https: / /de.wikipedia.org/wiki/MPEG-1#Layer_I) JakeGould vor 7 Jahren 0

1 Antwort auf die Frage

2
szatmary

Sie können es nicht einstellen. FFmpeg wählt die Version automatisch basierend auf der gewünschten Ausgabe. Um eine Version zu erzwingen, müssen Sie mit dieser Version kompatible Optionen verwenden. Lesen Sie diesen Link (Einleitung von dieser Seite unten) und wählen Sie die richtige Kombination, die für Ihre Anwendung geeignet ist.

In einer MPEG-Audiodatei gibt es keinen Hauptheader, da eine MPEG-Audiodatei nur aus einer Folge kleinerer Teile besteht, die als Frames bezeichnet werden. Jeder Frame ist ein Datenblock mit eigenem Header und Audioinformationen.

Im Fall von Layer I oder Layer II sind die Frames völlig unabhängig voneinander, sodass Sie jeden Teil einer MPEG-Audiodatei ausschneiden und korrekt abspielen können. Der Player spielt dann die Musik ab dem ersten voll gültigen Bild ab, das er finden wird. Im Fall von Layer III sind Frames jedoch nicht immer unabhängig. Aufgrund der möglichen Verwendung des "Byte-Reservoirs", das eine Art interner Puffer ist, sind Frames oft voneinander abhängig. Im schlimmsten Fall werden 9 Eingangsrahmen benötigt, bevor ein einzelner Rahmen dekodiert werden kann.

Wenn Sie Informationen zu einer MPEG-Audiodatei abrufen müssen, können Sie einfach den ersten Frame suchen und Informationen aus seinem Header abrufen. Informationen in anderen Frames sollten mit den ersten Frames übereinstimmen, mit Ausnahme der Bitrate, da Sie möglicherweise Informationen aus einer VBR-Datei (Variable Bitrate) abrufen. In einer VBR-Datei kann die Bitrate in jedem Frame geändert werden. Es kann beispielsweise verwendet werden, um eine konstante Klangqualität während der gesamten Datei zu erhalten, indem mehr Bits verwendet werden, wenn die Musik komplexer ist und daher mehr Bits mit ähnlicher Qualität codiert werden müssen.

Der Frame-Header selbst ist 32 Bit (4 Byte) lang. Die ersten zwölf Bits (oder die ersten elf Bits im Falle der Erweiterung MPEG 2.5) eines Rahmenkopfes werden immer auf 1 gesetzt und als "Rahmensynchronisation" bezeichnet. Frames können auch eine optionale CRC-Prüfsumme enthalten. Sie ist 16 Bit lang und folgt, falls vorhanden, unmittelbar dem Frame-Header. Nach dem CRC kommen die Audiodaten. Durch Neuberechnen des CRC und Vergleichen des Werts mit dem gelagerten Wert können Sie überprüfen, ob der Frame während der Übertragung des Bitstroms geändert wurde.

Können Sie mir also den Befehl zum Erzeugen der gewünschten Ausgabe mitteilen? samsam114 vor 7 Jahren 0