Audio 在.wav文件和十六进制编辑器中查找样本数

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

需要有关十六进制编辑器和音频文件的帮助。我在计算公式以获得.wav文件中的样本数时遇到困难

我下载了StripWav,它告诉我.wave中的样本数,但仍然无法计算出公式

你能下载这两个.wav,在十六进制编辑器中打开它们,告诉我获取样本数的公式吗

如果您愿意为我做这件事,请告诉我每个.wav的样本数量,这样我可以确保公式是正确的

http://sinewavemultimedia.com/2wav.wav

这里有个问题我有两个程序

一个读取wav数据,另一个显示numsample 这是数据

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 +------+------+------+------+------+------+------+------+-----