如何通过AVAudioSession和AVAudioSessionCategoryPlayAndRecord

时间:2018-06-11 16:53:47

标签: ios swift avfoundation

在类别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类别。

谢谢!

0 个答案:

没有答案