我正在使用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];
即使将通道数指定为2,播放也是单声道(即仅在1个耳机而不是两个通道中播放)。
还有其他人遇到过这个问题吗? recordSetting字典值有什么问题吗?
由于
任何人都可以帮我解决这个问题......如果我将通道数指定为2,为什么回放只能在一个插孔中? (我正在使用耳机进行测试 - 我的iPhone附带的耳机)
答案 0 :(得分:9)
只需注释掉以下内容
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
默认设置应该有效。
这样做的原因是您现在将录制单声道文件,当播放时,音频将在每个扬声器中播放,这与单声道文件的正常行为一样。如果你包含这一行,你最终会录制一个立体声文件,其中一个声道完全静音,这样当你播放它时,你只能在一只耳朵中获得音频。
答案 1 :(得分:1)
不,您的设置没有任何问题。如果您在模拟器上试用它,它将在两个频道上录制和播放。但是,iPhone 3G和3GS仅使用一个频道录制音频。这也适用于在3GS上拍摄的电影的音频。
因此,它不是一个错误。