1

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

4

2 回答 2

9

只需注释掉以下行

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

默认设置应该有效。

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

于 2009-09-24T06:46:06.830 回答
1

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

因此,它不是错误。

于 2009-07-17T07:43:02.133 回答