2009-07-17 109 views
1

我使用AVAudioRecorder进行录音并保存为WAV文件(使用SDK 3.0)的设置字典包含下列值iphone - AVAudioRecorder给单声道播放(声音在短短的一个通道播放)

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

@lostInTransit,这是无关紧要的:您可能希望通过用户页面最右侧的“accounts”标签将您的SO帐户与SU,SF和Meta相关联。你最近的问题转移到了SU。 – nik 2009-08-08 09:15:59

+0

尼克,我不明白这是如何属于苏。这与通过SDK录制声音时需要为AVAudioRecorder设置的属性相关。非常感谢将最后一个问题提交给SU。 – lostInTransit 2009-08-08 14:28:26

回答

1

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

因此,这不是一个错误。

9

注释掉以下行

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

默认设置应该工作。

这个原理的作用是,现在您将录制一个单声道文件,当播放这个文件时,音频将在每个扬声器中播放,就像单声道文件的正常行为一样。如果你包含这一行,你最终会记录一个立体声文件,其中一个声道完全无声,所以当你播放时只能听到一个声音。