当我在一个.wav文件的数据存储到一个字节数组,做这些价值观是什么意思? 我读过他们是用两个字节表示的,但究竟是包含在这两个字节值?
Answer 1:
你会听到,音频信号通过某种波表示。 如果你见过这波图带线上上下下 - 这基本上什么是这些文件内。 看看从该文件的图片http://en.wikipedia.org/wiki/Sampling_rate
你看你的音频波(灰线)。 该波的电流值重复测量并作为数给出。 这是在这些字节的数字。 有迹象表明,可以用这个来调节两个不同的东西:你每秒进行测量的数量(这是采样率,以Hz表示 - 这就是你有多少每秒抢)。 另一个调整是您衡量准确。 在2字节的情况下,采取一个测量两个字节(这是值从-32768到32767正常)。 因此,与给定的有这些数字,你可以重建原始波(最多限质,当然,不过这总是那么存储的东西时,数字)。 并重新创建原始波是你的音箱正试图以播放做。
有一些你需要知道更多的事情。 首先,因为它是两个字节,你需要知道的字节顺序(大端,小端),以正确地重新编号。 其次,你需要知道你多少个频道,以及它们是如何存储。 通常,您将有单声道(一个通道)或立体声(双),但更多的是可能的。 如果你有一个以上的频道,你需要知道,他们是如何存储。 通常你不应该把交错,这意味着你会得到一个值,每个通道在每个时间点,并在下一时间点的所有值之后。
来说明:如果你有两个通道位和16位数字的8个字节数据:
abcdefgh
这里a
和b
将构成第一16位数字,是用于信道1的第一个值, c
和d
。将用于信道2的第一数目e
和f
是信道1的第二值g
和h
用于信道的第二个值2.你不会听到太多那里,因为这不会接近数据的第二...
如果你把你一起拥有所有这些信息,就可以计算出你的比特率,这是怎样的信息有多少位是由每秒记录生成。 在我们的例子中,生成每个样品每通道2个字节。 具有两个通道,这将是4个字节。 您需要大约每秒44000样本表示人类beeing通常可以听到的声音。 所以,你会以每秒176000个字节,每秒1408000位结束。
,当然,这不是2位值,但有两个2个字节值出现,或者你将有一个非常糟糕的质量。
Answer 2:
前44个字节是常用标准RIFF头,如下所述: http://tiny.systems/software/soundProgrammer/WavFormatDocs.pdf和这里: http://www.topherlee.com/software/pcm-tut-wavformat html的
苹果/ OSX / MACOS / iOS的创建.wav文件可以补充一个“FLLR”填充块的报头,并因此增加了起始标题RIFF的大小从44个字节到4K字节(或许对于原料的更好的磁盘或存储块对准样本数据)。
其余的是非常经常在签署二进制补码小端格式的16位线性PCM,在44100 Hz的频率代表任意缩放样本。
Answer 3:
的波形(.wav)文件包含一个标题,它指示音频文件的数据的格式的信息。 继头是实际的音频原始数据。 您可以在下面检查他们的确切含义。
Positions Typical Value Description
1 - 4 "RIFF" Marks the file as a RIFF multimedia file.
Characters are each 1 byte long.
5 - 8 (integer) The overall file size in bytes (32-bit integer)
minus 8 bytes. Typically, you'd fill this in after
file creation is complete.
9 - 12 "WAVE" RIFF file format header. For our purposes, it
always equals "WAVE".
13-16 "fmt " Format sub-chunk marker. Includes trailing null.
17-20 16 Length of the rest of the format sub-chunk below.
21-22 1 Audio format code, a 2 byte (16 bit) integer.
1 = PCM (pulse code modulation).
23-24 2 Number of channels as a 2 byte (16 bit) integer.
1 = mono, 2 = stereo, etc.
25-28 44100 Sample rate as a 4 byte (32 bit) integer. Common
values are 44100 (CD), 48000 (DAT). Sample rate =
number of samples per second, or Hertz.
29-32 176400 (SampleRate * BitsPerSample * Channels) / 8
This is the Byte rate.
33-34 4 (BitsPerSample * Channels) / 8
1 = 8 bit mono, 2 = 8 bit stereo or 16 bit mono, 4
= 16 bit stereo.
35-36 16 Bits per sample.
37-40 "data" Data sub-chunk header. Marks the beginning of the
raw data section.
41-44 (integer) The number of bytes of the data section below this
point. Also equal to (#ofSamples * #ofChannels *
BitsPerSample) / 8
45+ The raw audio data.
我复制所有这些从http://www.topherlee.com/software/pcm-tut-wavformat.html这里
Answer 4:
正如其他人所指出的那样,有一个在wav文件的元数据,但我认为你的问题可能是,具体,有什么事字节(数据,而不是元数据)是什么意思? 如果这是真的,这些字节表示记录信号的值 。
那是什么意思? 好吧,如果你提取两个字节(说)表示每个样品(假设一个单声道录音,这意味着声音的只有一个通道记录),那么你已经有了一个16位值。 在WAV,16位是(总是?)签署和little-endian(AIFF和Mac OS的答案,WAV,是大端,顺便说一句)。 所以,如果你把16位采样值和2 ^ 16(或2 ^ 15,我想,如果是签名的数据)除以它,你会最终有一个样品是归一化为范围内-1到1这样做对所有样品并画出它们随时间(和时间是由多少个样本/秒是在记录来确定;例如44.1KHz的装置44.1样本/毫秒,所以第一采样值将在t被绘制= 0时,第44届在t = 1毫秒,等等),你已经有了大致代表了最初记录的信号。
Answer 5:
二位音频不会听起来很不错:)最常见的,它们代表样本值作为16位有符号表示的频率取样,如44.1音频波形数字。