音量无缘无故降低

问题描述

我有一个使用 SwiftUI 的 iOS 应用。它处理一些声音文件并执行一些录音。这是进行录音工作的函数

func recordAudio(to file: String,for duration: TimeInterval) {
    let audioSession:AVAudioSession = AVAudioSession.sharedInstance()
    
    do {try audioSession.setCategory(.playAndRecord,mode: .default)
        try audioSession.setActive(true)
        
        let audioFilename = getDocumentsDirectory().appendingPathComponent(file+".m4a"),audioURL = URL(fileURLWithPath: audioFilename),settings = [
                AVFormatIDKey: Int(kAudioFormatMPEG4AAC),AVSampleRateKey: 44100,AVNumberOfChannelsKey: 2,AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
                ]

        audioRecorder = try AVAudioRecorder(url: audioURL,settings: settings)
        audioRecorder.delegate = self
        audioRecorder.record(forDuration: TimeInterval(2.0))
    } catch let error as NSError {
        print("Failed -- Recording !!! -> \(error)")
    }
}

此时,它基本有效,但有一个我既不理解也不喜欢的奇怪行为。

问题来了:

当我启动应用程序并播放声音文件时,音量适合我的口味。 然后没有调整音量,我进行了一些录音(使用上面的功能)。 最后录制完成后,我回到刚才播放的文件,再次播放;音量神秘地下降了,我不知道为什么。

我的函数中有什么可以解释的吗? 或者其他人能想到的原因?

如果我重新启动应用程序,音量会自动恢复正常。 有关信息,我使用的是 iOS 14.4.2 和 Xcode 12.4。

解决方法

.playAndRecord 模式下录制后,音频会话将在播放过程中降低音量。录制后,明确设置为 .playback 之类的内容以获得您期望的音量。