如何确定 AAC 位深

Ste*_*nny 5 ffmpeg aac 16-bit

wav例如,使用文件,您可以轻松区分位深度

24 位

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

16 位

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

然而AAC似乎高深莫测

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

Kar*_*ran 10

AAC是一种有损格式(如 MP3),正如维基百科(实际上,您链接到的同一文章)所解释的:

位深度仅在参考 PCM 数字信号时才有意义。非 PCM 格式,例如有损压缩格式,没有关联的位深度。例如,在 MP3 中,对已转换到频域的 PCM 样本进行量化。


Mmm*_*Hmm 8

ffprobe 报告正确的位深度,但仅当有位深度要报告时,否则它会正确报告“位深度”不适用(N/A)。

在 FFmpeg 报告的数据字段“bits_per_raw_sample”和每个 Karans answer 中,“位深度”对于 AAC 编码的音频用词不当。

如果您正在尝试探测数据文件,您可能需要grep -e使用“codec_name”来辨别“bits_per_raw_sample”正在报告哪些流(视频、音频、文本)。这使得很容易知道报告的位深度状态是属于视频编解码器还是音频编解码器:

$ ffprobe -show_streams <input_file.mp4> | grep -e codec_name -e bits_per_raw_sample
Run Code Online (Sandbox Code Playgroud)

...生成的视频和音频数据文件报告的示例:

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
Run Code Online (Sandbox Code Playgroud)

您可能会喜欢这篇文章,“音频编码解密

位深

除了采样率之外,还需要考虑位深度。位深度是用于对每个样本进行编码的信息的数字位数。简单来说,位深衡量的是“精度”。位深度越高,信号就越能准确地传达实际模拟声源的幅度。使用尽可能低的位深度,我们只有两种选择来测量声音的精度:0 表示完全静音,1 表示完全音量。位深度越高,编码音频的精度就越高。例如:CD 质量的音频是标准的 16 位,它提供 216(或 65,536)个卷可供选择。

PCM 编码的位深度是固定的,但对于有损压缩编解码器(如 MP3 和 AAC),它是在编码期间计算的,并且可能因样本而异。

...所以,要解决这个问题,“如何确定 AAC 位深度?” 我想你必须在每个样本的基础上做一个样本。