iphone - AVAudioRecorder提供单声道播放(仅在一个频道播放声音)

los*_*sit 1 iphone avaudiorecorder iphone-sdk-3.0

我正在使用AVAudioRecorder录制音频并保存到wav文件(使用SDK 3.0)设置字典包含以下值

    NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];

    [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
    [recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey]; 
    [recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];

    [recordSetting setValue :[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
    [recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
    [recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
Run Code Online (Sandbox Code Playgroud)

即使将通道数指定为2,播放也是单声道(即仅在1个耳机插孔而不是两个通道中播放).

还有其他人遇到过这个问题吗?recordSetting字典值有什么问题吗?

谢谢

任何人都可以帮我这个...如果我指定通道数为2,为什么回放只在一个插孔?(我正在使用耳机进行测试 - 我的iPhone附带的耳机)

gra*_*ito 9

只需注释掉以下行

[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
Run Code Online (Sandbox Code Playgroud)

默认设置应该有效.

这样做的原因是您现在将录制单声道文件,当播放时,音频将在每个扬声器中播放,这与单声道文件的正常行为一样.如果你包含这一行,你最终会录制一个立体声文件,其中一个声道完全静音,这样当你播放它时,你只能在一只耳朵中获得音频.