So bestimmen Sie die AAC-Bittiefe

6505
Steven Penny

Mit einer wavDatei können Sie beispielsweise leicht zwischen den Bittiefen unterscheiden

24 Bit

Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 44100 Hz, stereo,  s32, 2116 kb/s 

16-Bit

Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s 

AAC scheint jedoch undurchschaubar

Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 151 kb/s 
1

2 Antworten auf die Frage

9
Karan

AAC ist ein verlustbehaftetes Format (wie MP3) und wie Wikipedia (in der Tat derselbe Artikel, mit dem Sie verlinkt haben):

Die Bittiefe ist nur in Bezug auf ein digitales PCM-Signal von Bedeutung. Nicht-PCM-Formate, wie verlustbehaftete Komprimierungsformate, haben keine zugehörigen Bittiefen. In MP3 wird zum Beispiel die Quantisierung von PCM-Samples durchgeführt, die in den Frequenzbereich transformiert wurden.

3
Mr. Kennedy

ffprobe meldet die richtige Bittiefe, aber nur, wenn eine Bittiefe gemeldet werden muss, andernfalls wird korrekt gemeldet, dass "Bittiefe" nicht anwendbar ist (N / A).

In FFmpegs Bericht des Datenfelds "bits_per_raw_sample" und pro Antwort von Karans ist "Bittiefe" für AAC-codiertes Audio falsch.

Wenn Sie versuchen, die grep -eDatendatei zu prüfen, möchten Sie möglicherweise für "codec_name" erkennen, welche Streams (Video, Audio, Text) von "bits_per_raw_sample" gemeldet werden. Dies macht es leicht zu wissen, ob der gemeldete Bittiefenstatus den Videocodec oder den Audiocodec betrifft:

$ ffprobe -show_streams <input_file.mp4> | grep -e codec_name -e bits_per_raw_sample 

... ein Beispiel für einen Video- und Audiodatenbericht:

codec_name=h264 <----- video bits_per_raw_sample=8 <----- 8-bit depth video codec_name=aac <----- AAC audio bits_per_raw_sample=N/A <----- bit depth is "Not Applicable" to AAC audio 

Sie mögen diesen Artikel, " Audio Encoding Demystified "

Bittiefe

Neben der Abtastrate muss auch die Bittiefe berücksichtigt werden. Die Bittiefe ist die Anzahl digitaler Informationsbits, die zum Codieren jedes Samples verwendet werden. Einfach ausgedrückt misst die Bittiefe „Präzision“. Je höher die Bittiefe, desto genauer kann ein Signal die Amplitude der tatsächlichen analogen Klangquelle kommunizieren. Bei der geringstmöglichen Bittiefe haben wir nur zwei Möglichkeiten, die Genauigkeit des Klangs zu messen: 0 für vollständige Stille und 1 für volle Lautstärke. Je höher die Bittiefe, desto präziser ist das kodierte Audio. Beispiel: Audio in CD-Qualität ist ein Standard-16-Bit-Format, aus dem 216 (oder 65.536) Volumes zur Auswahl stehen.

Die Bittiefe ist für die PCM-Codierung festgelegt, für verlustbehaftete Kompressionscodecs (wie MP3 und AAC) wird sie jedoch während der Codierung berechnet und kann von Sample zu Sample variieren.

... also, um die Frage zu beantworten: "Wie bestimme ich die AAC-Bittiefe?" Ich nehme an, Sie müssten dies auf Stichprobenbasis tun.

Vollständige und gut detaillierte Antwort. dark_st3alth vor 7 Jahren 1
* Für verlustbehaftete Kompressionscodecs (wie MP3 und AAC) wird es während des Codierens berechnet und kann von Sample zu Sample variieren. * -> Die Bittiefe wird immer noch begrenzt. Wenn eine MP3-Datei aus einer 16-Bit-PCM-Quelle codiert wird, würde man beim Dekodieren keine 24-Bit-Genauigkeit erwarten. Gyan vor 7 Jahren 0
@ Mulvya, ffmpeg ist in ständiger Entwicklung. Wenn Sie möchten, können Sie ein Feature für ffmpeg erstellen, das die Bittiefe jedes Samples analysiert und diesen Bereich angibt. "Bits_per_raw_sample" ist jedoch keine konstante Ganzzahl mit AAC, und die Autoren von ffmpeg haben sich für diesen Standard des digitalen Audios als geeignet erwiesen durch Meldung, dass der Begriff "Bittiefe" für AAC-Dateien "nicht zutreffend" (N / A) ist. Mr. Kennedy vor 7 Jahren 0
Ich beschwere mich nicht :) Ich weise nur darauf hin, dass es eine gültige (feste) Messung gibt, die gemeldet werden könnte -> die Bittiefe der Samples, die dem Encoder zugeführt werden. Gyan vor 7 Jahren 0
@ Mulvya, ebenso könnte es nützlich sein, den Bereich zu kennen, aber ich sehe nicht wirklich wie, außer in Randfällen, und was würde sich aus der Berechnung des gesamten Bereichs als Teil eines Metadatenausdrucks ergeben? FFmpeg ist auf Geschwindigkeit ausgelegt. Wie gesagt, diese Option könnte als Funktion hinzugefügt werden, wenn ffmpeg dies melden soll. Für die Industriestandards ist "bit-depth" jedoch ein Irrtum bei der Beschreibung von AAC-Dateien. Mr. Kennedy vor 7 Jahren 0
@ Mulvya um klar zu sein, machen Sie einen gültigen und fundierten Punkt. Wenn Sie die Frage oder Antwort als nützlich erachten, stimmen Sie bitte entsprechend. Vielen Dank! Mr. Kennedy vor 7 Jahren 0