Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/audio/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio WAV怎么样;“数据”;子块结构?_Audio_Wav_Chunks - Fatal编程技术网

Audio WAV怎么样;“数据”;子块结构?

Audio WAV怎么样;“数据”;子块结构?,audio,wav,chunks,Audio,Wav,Chunks,我正在编写一个C#应用程序来处理WAV文件,并且我已经完成了足够的代码来读取任何文件的块(即读取格式化元数据和所有其他块,准备用这些信息处理数据) 我现在必须处理数据块,但我不知道/没有资源来了解样本是如何拼凑在一起的。如果可能的话,请您只回答数据块的链接/信息,而不是WAV文件的一般结构 我需要更多地了解随着时间的推移,样本是如何逐字节构造的 谢谢大家!!如果我在这个问题上做错了什么,请发表评论,这样我就可以重新措辞/编辑这篇文章。这当然取决于所使用的编解码器,但我们将假设PCM,因为这是迄今

我正在编写一个C#应用程序来处理WAV文件,并且我已经完成了足够的代码来读取任何文件的块(即读取格式化元数据和所有其他块,准备用这些信息处理数据)

我现在必须处理数据块,但我不知道/没有资源来了解样本是如何拼凑在一起的。如果可能的话,请您只回答数据块的链接/信息,而不是WAV文件的一般结构

我需要更多地了解随着时间的推移,样本是如何逐字节构造的


谢谢大家!!如果我在这个问题上做错了什么,请发表评论,这样我就可以重新措辞/编辑这篇文章。

这当然取决于所使用的编解码器,但我们将假设PCM,因为这是迄今为止在WAV文件中最常见的东西

PCM是一种对特定时刻的压力测量进行编码的方法。如果我测量压力级别的速度足够快,分辨率足够高,我就能准确地近似原始波形

来自维基百科:

因为您已经在分析标头,所以您知道采样率。这是每秒采集的样本数。每秒44100个采样(或44.1 kHz采样率)是典型的CD音频。对于视频,更常用48 kHz的采样率

从标题中,还可以知道每个样本的位数。这表示所采集的每个样本的分辨率。16位样本自然每个样本占用2个字节

在音频数据中,样本只是一个接一个的数值

[sample 0][sample 1][sample 2][...]
通道计数也在标题中指示,它告诉您采样了多少个离散通道。单声道声音只有1。立体声将有2个。5.1环绕声将有6个。采样值本身是交错的,一个通道采样一个通道采样,形成一个帧。如果我有一个左右声道的立体声音轨,它看起来会像这样:

[L][R][L][R][L][R][L][R][...]
要实际读取这些数值,数据通常以小尾数形式写入。对于16位及更高的采样,通常使用有符号整数