声音格式问题?
WAVEINOPEN的参数是
WAVEFORMATEX waveformat;
waveformat.nAvgBytesPerSec=16000;
waveformat.nBlockAlign=2;
waveformat.nChannels=1;
waveformat.nSamplesPerSec=8000;
waveformat.wBitsPerSample=8;
waveformat.wFormatTag=WAVE_FORMAT_PCM;
写入文件的文件头的参数是什么?
我用这样的参数可以写入为什么回放时感到声音很慢,有延迟!
waveformat.nAvgBytesPerSec=8000;
waveformat.nBlockAlign=1;
waveformat.nChannels=1;
waveformat.nSamplesPerSec=8000;
waveformat.wBitsPerSample=8;
waveformat.wFormatTag=WAVE_FORMAT_PCM;
请帮忙!
谢谢!
问题点数:100、回复次数:16Top
1 楼2ndboy(贱男春)回复于 2002-03-28 11:44:50 得分 50
SamplesPerSec是采样率
Channel是声道数
BitsPerSample是每个样本的量化位数
BlockAlign是每个样本的字节数,应该这样计算:
BlockAlign = Channel * BitsPerSample / 8;
AvgBytesPerSec是每秒钟的字节数,应该这样计算:
AvgBytesPerSec = BlockAlign * SamplesPerSec;Top
2 楼akiko(弥弥)回复于 2002-03-28 11:50:03 得分 0
对于WAVE_FORMAT_PCM格式的声音文件,有以下关系:
nBlockAlign = nChannels * wBitsPerSample / 8;
nAvgBytesPerSec = nSamplesPerSec * nBlockAlign;Top
3 楼scl(星星)回复于 2002-03-28 11:57:15 得分 0
我的写的对不对?Top
4 楼scl(星星)回复于 2002-03-28 11:59:15 得分 0
打开WAVEINOPEN的参数为什么不符合呢?Top
5 楼scl(星星)回复于 2002-03-28 12:01:01 得分 0
我回放时的效果很不好,怎么解释呢?Top
6 楼2ndboy(贱男春)回复于 2002-03-28 12:20:59 得分 0
1*8000/8=1000
你怎么写的是1?Top
7 楼ericzhangali(另一个空间)回复于 2002-03-28 12:42:13 得分 50
WAV文件头:
偏移地址 字节数 数据类型 内 容
00H 4 char "RIFF"标志
04H 4 long int 文件长度
08H 4 char "WAVE"标志
0CH 4 char "fmt"标志
10H 4 过渡字节(不定)
14H 2 int 格式类别(10H为PCM形式的声音数据)
16H 2 int 通道数,单声道为1,双声道为2
18H 2 int 采样率(每秒样本数),表示每个通道的播放速度,
1CH 4 long int 波形音频数据传送速率,其值为通道数×每秒数据位数×每样本的数据位数/8。播放软件利用此值可以估计缓冲区的大小。
20H 2 int 数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8。播放软件需要一次处理多个该值大小的字节数据,以便将其值用于缓冲区的调整。
22H 2 每样本的数据位数,表示每个声道中各个样本的数据位数。如果有多个声道,对每个声道而言,样本大小都一样。
24H 4 char 数据标记符"data"
28H 4 long int 语音数据的长度
Top
8 楼ericzhangali(另一个空间)回复于 2002-03-28 12:46:36 得分 0
你的采样率导致回放效果不好
丢丢说的什么1*8000/8=1000?Top
9 楼scl(星星)回复于 2002-03-28 15:45:12 得分 0
我录了二十秒,结果回放时放了三十秒,这是为什么?Top
10 楼bluestar(蓝色星星)回复于 2002-03-28 17:01:41 得分 0
你回访是填动态缓冲区还是静态的,填的位置不对回造成错误现象。Top
11 楼2ndboy(贱男春)回复于 2002-03-28 17:19:00 得分 0
是参数问题,看一下我上面写的东西Top
12 楼ericzhangali(另一个空间)回复于 2002-03-28 17:22:19 得分 0
采样率不一样Top
13 楼scl(星星)回复于 2002-03-28 17:38:37 得分 0
我的问题好了,谢谢你们俩个人!
每人50好吗?Top
14 楼scl(星星)回复于 2002-03-28 17:39:29 得分 0
谢谢你们的帮助!
Top
15 楼sly582(张仓)回复于 2002-03-28 17:40:46 得分 0
采样不一样,同上阿Top
16 楼scl(星星)回复于 2002-03-28 17:41:12 得分 0
朋友们,下次见!Top




