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

2 ответа2

9

AAC - это формат с потерями (например, MP3), и, как объясняет Википедия (действительно, та же статья, на которую вы ссылались):

Глубина в битах имеет смысл только в отношении цифрового сигнала ИКМ. Форматы, отличные от PCM, такие как форматы сжатия с потерями, не имеют связанных битовых глубин. Например, в MP3 квантование выполняется на выборках ИКМ, которые были преобразованы в частотную область.

3

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 (или 65 536) томов.

Глубина в битах фиксирована для кодирования PCM, но для кодеков сжатия с потерями (таких как MP3 и AAC) она рассчитывается во время кодирования и может варьироваться от образца к образцу.

... итак, чтобы ответить на вопрос "Как определить битовую глубину AAC?"«Я полагаю, вам придется делать это по принципу« образец за образцом ».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .