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

时间:2009-07-17 05:57:15

标签: iphone iphone-sdk-3.0 avaudiorecorder

我正在使用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附带的耳机)

2 个答案:

答案 0 :(得分:9)

只需注释掉以下内容

[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];

默认设置应该有效。

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

答案 1 :(得分:1)

不,您的设置没有任何问题。如果您在模拟器上试用它,它将在两个频道上录制和播放。但是,iPhone 3G和3GS仅使用一个频道录制音频。这也适用于在3GS上拍摄的电影的音频。

因此,它不是一个错误。