初级会员

- 积分
- 106
- 金钱
- 106
- 注册时间
- 2016-5-10
- 在线时间
- 26 小时
|
1金钱
本帖最后由 skyqiu 于 2016-8-29 17:19 编辑
wm8978录音,如何设置单声道、立体声模式?原子的代码是立体声的吧?
如果要改为单声道,除了这个初始化WAV头需要修改,还有其他什么地方需要修改吗?最好能详细点,求指导,谢谢!
//初始化WAV头.
void recoder_wav_init(__WaveHeader* wavhead) //初始化WAV头
{
wavhead->riff.ChunkID=0X46464952; //"RIFF"
wavhead->riff.ChunkSize=0; //还未确定,最后需要计算
wavhead->riff.Format=0X45564157; //"WAVE"
wavhead->fmt.ChunkID=0X20746D66; //"fmt "
wavhead->fmt.ChunkSize=16; //大小为16个字节
wavhead->fmt.AudioFormat=0X01; //0X01,表示PCM;0X01,表示IMA ADPCM
wavhead->fmt.NumOfChannels=2;//双声道 单声道为1?
wavhead->fmt.SampleRate=SampleRate; //16Khz采样率 采样速率
wavhead->fmt.ByteRate=wavhead->fmt.SampleRate*4;//字节速率=采样率*通道数*(ADC位数/8) 单声道设置为wavhead->fmt.SampleRate*2
wavhead->fmt.BlockAlign=4; //块大小=通道数*(ADC位数/8) 单声道为2?
wavhead->fmt.BitsPerSample=16; //16位PCM
wavhead->data.ChunkID=0X61746164; //"data"
wavhead->data.ChunkSize=0; //数据大小,还需要计算
}
|
最佳答案
查看完整内容[请看2#楼]
这里修改是第一步,在写入WAV音频数据的时候,还要小改一下,我们例程是写入了双声道的数据的(虽然两个声道数据完全一样),你要做的就是去掉一个声道数据的写入。
|