2009-07-17 80 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]; 

默認設置應該工作。

這個原理的作用是,現在您將錄製一個單聲道文件,當播放這個文件時,音頻將在每個揚聲器中播放,就像單聲道文件的正常行爲一樣。如果你包含這一行,你最終會記錄一個立體聲文件,其中一個聲道完全無聲,所以當你播放時只能聽到一個聲音。