在类别AVAudioSessionCategoryPlayAndRecord
的录制会话期间,我可以听到所有录制的音频通过耳机实时回放,并通过耳机(如果已连接)。有没有办法在不切换类别的情况下关闭它?
音频初始化代码:
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
} catch {
print(error.localizedDescription)
}
录音机代码:
let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
audioFileName = "filename.caf"
let audioFileUrl = documentsDirectory.appendingPathComponent(audioFileName)
let recordSettings = [
AVFormatIDKey: Int(kAudioFormatAppleLossless),
AVEncoderAudioQualityKey : AVAudioQuality.max.rawValue,
AVEncoderBitRateKey : 320000,
AVNumberOfChannelsKey: 2,
AVSampleRateKey : 44100.0
] as [String : Any]
do {
Utils.audioRecorder = try AVAudioRecorder(url: audioFileUrl, settings: recordSettings)
} catch let error as NSError{
print("Audio Setup Error: \(error)")
Utils.audioRecorder = nil
}
Utils.audioRecorder?.delegate = self
Utils.audioRecorder?.isMeteringEnabled = true
Utils.audioRecorder?.prepareToRecord()
然后在其他地方:
Utils.audioRecorder?.record()
The Apple Docs说你可以同时播放和录制,但我无法弄清楚如何做后者:
此类别适用于同步录制和播放, 以及录制和播放但不同时播放的应用。
我在SO上做了很多细读,但找不到任何东西。我会使用AVAudioSessionCategoryRecord
,但我使用AudioKit
,这需要AVAudioSessionCategoryPlayAndRecord
类别。
谢谢!