audio - .wav 文件中的字节代表什么?

标签 audio wav

当我将 .wav 文件中的数据存储到字节数组中时,这些值是什么意思?
我已经读到它们采用两字节表示形式,但是这些两字节值中究竟包含什么?

最佳答案

您可能听说过,音频信号是由某种波表示的。如果您曾经看过这种带有上下线的波形图 - 这基本上就是这些文件中的内容。看看来自 http://en.wikipedia.org/wiki/Sampling_rate 的这张文件图片

sampling

您会看到您的音频波(灰线)。该波的当前值被重复测量并以数字形式给出。这就是这些字节中的数字。有两个不同的东西可以用它来调整:你每秒进行的测量次数(这是采样率,以赫兹为单位——这是你每秒抓取的次数)。另一个调整是您测量的精确度。在 2 字节的情况下,一次测量需要两个字节(通常是从 -32768 到 32767 的值)。因此,通过那里给出的这些数字,您可以重新创建原始波形(当然,质量有限,但以数字方式存储内容时总是如此)。重新创建原始波形是您的扬声器在播放时尝试执行的操作。

还有一些你需要知道的事情。首先,由于它是两个字节,您需要知道字节顺序(大端、小端)以正确重新创建数字。其次,您需要知道您有多少个 channel ,以及它们是如何存储的。通常您会有单声道(一个 channel )或立体声(两个),但也可能有更多。如果您有多个 channel ,您需要知道它们是如何存储的。通常你会让它们交错,这意味着你会在每个时间点为每个 channel 获得一个值,然后为下一个时间点获得所有值。

举例说明:如果您有两个 channel 的 8 字节数据和 16 位数字:

abcdefgh

这里ab将构成第一个 16 位数字,即 channel 1 的第一个值,cd将是 channel 2 的第一个数字。ef是 channel 1 的第二个值,gh channel 2 的第二个值。在那里你不会听到太多,因为那不会接近一秒的数据......

如果你把你拥有的所有信息放在一起,你就可以计算出你拥有的比特率,也就是记录器每秒生成多少位信息。在我们的示例中,您在每个样本上为每个 channel 生成 2 个字节。如果有两个 channel ,那就是 4 个字节。您每秒需要大约 44000 个样本来表示人类通常可以听到的声音。所以你最终会得到每秒 176000 字节,也就是每秒 1408000 位。

当然,它不是 2 位值,而是两个 2 字节值,否则质量会非常差。

关于audio - .wav 文件中的字节代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13039846/

相关文章:

android - 将字节写入WAV文件会增加背景噪音

android - 将 Wav 文件重新编码为 AAC LC、AMR WB/NB

python - 读取所有子目录中的wav文件

android - 在Android中以类似于Chirp的方式读取和传输WAV文件

javascript - 从 Soundcloud 嵌入的动态音频 <iframe>

audio - 使用 html5 `<audio>` 标签流式传输音频

macos - 正在为 Mac 音频队列服务选择输入麦克风?

c# - 寻找一个库来合成来自 soundfonts 的声音

python - 来自音频流wav或mp3的python make_chunks

audio - .wac 到 .wav 转换