Як визначити бітну глибину AAC


1

wavНаприклад, за допомогою файлу ви можете легко розрізнити глибину бітів

24-розрядні

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

16-бітний

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

Однак AAC здається непереборним

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

Відповіді:


10

AAC - це формат втрат (наприклад, MP3), і як пояснює Вікіпедія (справді та сама стаття, з якою ви пов’язані):

Бітова глибина має значення лише стосовно цифрового сигналу PCM. Формати, що не належать до ПК, такі як формати стиснення втрат, не мають пов'язаних глибин бітів. Наприклад, у форматі MP3 квантування проводиться на зразках PCM, які були перетворені в частотну область.


4

ffprobe повідомляє про правильну глибину бітів, але лише тоді, коли має бути трохи глибина для повідомлення , інакше правильно повідомляє, що "бітова глибина" не застосовується (N / A).

У звіті FFmpeg про поле даних "bits_per_raw_sample" та за відповідь Каранаса "бітова глибина" є неправильним для кодованого AAC аудіо.

Якщо ви намагаєтеся проаналізувати файл даних, ви, можливо, захочете grep -eза допомогою "codec_name" визначити, які потоки (відео, аудіо, текст) "bits_per_raw_sample" повідомляють. Це дозволяє легко дізнатися, чи повідомляється про стан бітової глибини відноситься до відеокодеку чи аудіокодеку:

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

... приклад результату звіту про файл відео та аудіо даних:

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

Вам може сподобатися ця стаття " Демостифіковане аудіокодування "

Бітова глибина

Поряд зі швидкістю вибірки, також слід враховувати глибину біту. Бітова глибина - це кількість цифрових біт інформації, яка використовується для кодування кожного зразка. Простіше кажучи, бітова глибина вимірює "точність". Чим більша глибина біту, тим точніше сигнал може передавати амплітуду фактичного аналогового джерела звуку. З найменшою можливою глибиною біту у нас є лише два варіанти вимірювання точності звуку: 0 для повної тиші та 1 для повної гучності. Чим більша глибина біту, тим більше точність має над кодованим звуком. Як приклад: аудіо якості CD - це стандартний 16-розрядний, який дає 216 (або 65536) томів на вибір.

Бітова глибина фіксується для кодування PCM, але для кодеків стиснення втрат (як MP3 та AAC) вона обчислюється під час кодування і може змінюватись від вибірки до вибірки.

... так, щоб вирішити питання "Як визначити бітну глибину AAC?" Я припускаю, що вам доведеться робити це на вибірці за зразком.


1
Повна і добре детальна відповідь.
dark_st3alth

для кодеків, що втрачають втрату (наприклад, MP3 та AAC), він обчислюється під час кодування і може змінюватись від вибірки до вибірки -> все одно буде стеля на бітовій глибині. Якщо MP3 кодується з 16-розрядного джерела PCM, то не слід очікувати 24-бітової точності після декодування.
Gyan

@Mulvya, ffmpeg знаходиться в стадії розробки. Якщо ви хочете, ви можете написати функцію ffmpeg, яка аналізувала бітну глибину кожного зразка і повідомляла про цей діапазон, однак, "bits_per_raw_sample" не є постійним цілим числом з AAC, і автори ffmpeg вважають за потрібне вирішити цей стандарт цифрового аудіо повідомляючи, що термін "бітова глибина" "не застосовується" (N / A) для файлів AAC.
Містер Кеннеді

Я не нарікаю :) Просто зазначивши, що існує один дійсний (фіксований) захід, про який можна було б повідомити -> бітова глибина зразків, що подаються в кодер.
Gyan

@Mulvya також може бути корисно знати діапазон, але я не розумію, як, за винятком крайових випадків, і що можна отримати, обчисливши весь діапазон як частину роздрукування метаданих? FFmpeg побудований для швидкості. Як я вже сказав, тхо, ця опція може бути додана як функція, якщо і коли ви хочете ffmpeg повідомляти про таке, однак, для галузевих стандартів "бітова глибина" є неправильним описом файлів AAC.
Містер Кеннеді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.