Wie steuert FFmpeg Bittiefe und Bitrate?

Wie steuert FFmpeg Bittiefe und Bitrate?

Beim Konvertieren von Audio mit FFmpeg gibt es -arOptionen -ac, die die Abtastrate bzw. die Anzahl der Kanäle steuern. Es gibt auch -abeine Option zur Steuerung der Bitrate, aber keine Option zur Steuerung der Bittiefe.

Seit…

[Bitrate] = [Anzahl der Kanäle] * [Abtastrate] * [Bittiefe]

… bedeutet dies, dass ffmpeg die Bittiefe aus den anderen 3 Parametern berechnet?

Ein weiterer Beitragbesagt, dass die Bittiefe in der Formatoption gesteuert wird. Das hat mich verwirrt, da die obige Gleichung möglicherweise nicht mehr gilt, wenn der Benutzer alle 4 Parameter einstellt.

Kann mir bitte jemand erklären, wie Bittiefe und Bitrate in FFmpeg funktionieren?

Antwort1

Was die Möglichkeiten derEinstellen der Bittiefe: Es hängt von Ihren Quelldateien und Ihrem Ausgabeformat ab.

Nehmen Sie beispielsweise pcm_s16leund pcm_s24le– beide rendern PCM-Dateien, jedoch mit 16 Bit bzw. 24 Bit Bittiefe. (Sie finden diese Informationen unter ffmpeg -h encoder=<YOUR_ENCODER>.)

Wenn Sie ein Format haben, das mehrere Bittiefen verarbeiten kann (wie libmp3lame), gibt FFmpeg den verwendeten Wert standardmäßig an, indem es sich die Quelldatei ansieht: Wenn Sie also verwenden -c:a libmp3lameund Ihre Eingabedatei eine Bittiefe von 16 Bit hat, verwendet FFmpeg 16 Bit. Wenn Sie eine 32-Bit-Datei haben und diese in einem Codec kodieren möchten, der nur 16 Bit verarbeiten kann, wird FFmpeg sie für Sie herunterskalieren.

Sie können es aber auch selbst angebenmit-sample_fmt.


Was IhreBitratenformel: FFmpeg betrachtet wie praktisch alle anderen Tools die Anzahl der Audiokanäle, die Bittiefe und die Abtastrate als feste Werte (was bedeutet, dass sie sich innerhalb der Datei nicht ändern), während die Bitrate die Variable ist, die mit der Qualität der Kodierung korreliert. Das gilt jedoch nur für verlustbehaftete Codecs; deshalb macht es keinen Unterschied, eine WAV-Datei 200 Mal neu zu kodieren, während das 20-malige Neukodieren derselben Dateien mit einem einigermaßen guten MP3-Encoder bereits zu unerträglichen Ergebnissen führen kann.

Verlustbehaftete Codecs fügen Ihrer Gleichung Qualität hinzu: Beispielsweise 320kwürde bei MP3 ein Wert von eine sehr gute Qualität erzielen, da der Encoder nicht viele Informationen weglassen müsste, um innerhalb der angegebenen Werte zu bleiben. Wenn Sie verwenden würden -b:a 64k, müsste der Encoder viele Informationen weglassen, um die angegebene Bitrate zu erreichen. Encoder verringern so weit wie nötig, um die Bitrate zu erreichen:Sehr trivialisierte und daher nur theoretische Beispiele für Informationen, die weggelassen werden könnten:

  • Wenn der Encoder durch die Kombination aller Frequenzen von 8–16 kHz in einer halbkomplexen Sinuswelle die Bitrate erreichen könnte, würde er dies tun.
  • Wenn das Löschen aller Signale unter -32 dB den Zweck erfüllen würde, würde es funktionieren.

Für eine praktische Erklärung, welche Informationen gelöscht werden, empfehle ich Ihnen, zunächst zu lesen:Wikipedia-Artikel über Audiodatenkomprimierung.

verwandte Informationen