Audio 在.wav文件和十六进制编辑器中查找样本数
需要有关十六进制编辑器和音频文件的帮助。我在计算公式以获得.wav文件中的样本数时遇到困难 我下载了StripWav,它告诉我.wave中的样本数,但仍然无法计算出公式 你能下载这两个.wav,在十六进制编辑器中打开它们,告诉我获取样本数的公式吗 如果您愿意为我做这件事,请告诉我每个.wav的样本数量,这样我可以确保公式是正确的 http://sinewavemultimedia.com/2wav.wav 这里有个问题我有两个程序 一个读取wav数据,另一个显示numsample 这是数据Audio 在.wav文件和十六进制编辑器中查找样本数,audio,hex,hex-editors,wav,Audio,Hex,Hex Editors,Wav,需要有关十六进制编辑器和音频文件的帮助。我在计算公式以获得.wav文件中的样本数时遇到困难 我下载了StripWav,它告诉我.wave中的样本数,但仍然无法计算出公式 你能下载这两个.wav,在十六进制编辑器中打开它们,告诉我获取样本数的公式吗 如果您愿意为我做这件事,请告诉我每个.wav的样本数量,这样我可以确保公式是正确的 http://sinewavemultimedia.com/2wav.wav 这里有个问题我有两个程序 一个读取wav数据,另一个显示numsample 这是数据 R
RIFF 'WAVE' (wave file)
<fmt > (format description)
PCM format
2 channel
44100 frames per sec
176400 bytes per sec
4 bytes per frame
16 bits per sample
<data> (waveform data - 92252 bytes)
/*********更新************/
还有一件事,我用两个文件进行了计算
这个是正确的
92,296 bytes and num samples is 23,063`
但是另一个没有正确地显示出来,超过2兆,我只是删减了44个字节,我做错了吗?这是文件大小
2,473,696 bytes
但正确的numsample是
617,400
确定WAV文件中的样本数没有简单的公式。所谓的“规范”WAV文件由44字节的头文件和实际的样本数据组成。因此,如果您知道文件每个样本使用2个字节,那么样本数等于文件大小(以字节为单位)减去44(对于标头),然后除以2(因为每个样本有2个字节) 不幸的是,并非所有WAV文件都是这样的“规范”。WAV文件使用RIFF格式,因此解析WAV文件的正确方法是搜索文件并找到各种块 下面是一个示例(不确定您需要用什么语言执行此操作): 您必须读取
fmt
标题以确定每个采样的通道数和位数,然后读取数据块的大小以确定音频中的数据字节数。然后:
NumSamples = NumBytes / (NumChannels * BitsPerSample / 8)
WAVE
的format chunk
(fmt
)将“每个样本帧的字节数”指定为wBlockAlign
。
所以:framesTotal=data.ck\u size/fmt.wBlockAlign代码>
和samplesTotal=framesTotal*wChannels代码>
因此,samplesTotal===FramesTotal IIF wChannels===1
请注意,上述答案如何巧妙地避免解释规范中的关键方程式(以及基于它们的答案)是错误的:
考虑For例子2通道12比特每秒波…BR>
规范解释说,我们将每个12个基点的样本放在一个词中:
note: t=point in time, chan = channel
+---------------------------+---------------------------+-----
| frame 1 | frame 2 | etc
+-------------+-------------+-------------+-------------+-----
| chan 1 @ t1 | chan 2 @ t1 | chan 1 @ t2 | chan 2 @ t2 | etc
+------+------+------+------+------+------+------+------+-----
| byte | byte | byte | byte | byte | byte | byte | byte | etc
+------+------+------+------+------+------+------+------+-----
注:t=时间点,chan=通道
+---------------------------+---------------------------+-----
|第1帧|第2帧|等
+-------------+-------------+-------------+-------------+-----
|chan 1@t1 | chan 2@t1 | chan 1@t2 | chan 2@t2 |等
+------+------+------+------+------+------+------+------+-----
|字节|字节|字节|字节|字节|字节|字节|字节|等
+------+------+------+------+------+------+------+------+-----
所以。。根据规范,2ch 12bps波形的示例帧(BlockAlign
)有多少字节?
CEIL(wChannels*bps/8)
=3字节
显然,正确的公式是:wBlockAlign=wcchannels*CEIL(bps/8)
请参阅了解如何解码。哦,我知道这也是你的问题。更新了我的问题请进一步帮助/更新了我的问题。请进一步帮助你的“其他程序”似乎是错误的标记。92252字节的数据意味着46126个样本(因为您的格式是每个样本2字节)。因为文件是立体声(2通道),这意味着它包含23063帧,而不是23063个采样-2通道WAV文件每帧包含两个采样,而mono文件每帧仅包含一个采样。
note: t=point in time, chan = channel
+---------------------------+---------------------------+-----
| frame 1 | frame 2 | etc
+-------------+-------------+-------------+-------------+-----
| chan 1 @ t1 | chan 2 @ t1 | chan 1 @ t2 | chan 2 @ t2 | etc
+------+------+------+------+------+------+------+------+-----
| byte | byte | byte | byte | byte | byte | byte | byte | etc
+------+------+------+------+------+------+------+------+-----