簡體   English   中英

在使用 Zoom 或其他應用程序共享屏幕期間錄音不起作用

[英]Audio Recording is not working during Screen-share with Zoom or other app

我正在嘗試使用AVAudioRecorder錄制語音。 如果未啟用屏幕共享,它工作正常。 但請注意,當我與 Zoom 或任何其他應用程序共享我的設備屏幕時。 AVAudioSession未激活。

在這里我附上我為錄音添加的代碼

UIApplication.shared.beginReceivingRemoteControlEvents()
        let session = AVAudioSession.sharedInstance()
        do{
            try session.setCategory(.playAndRecord,options: .defaultToSpeaker)
            try session.setActive(true)
            
            let settings = [
                AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
                AVSampleRateKey: 44100,
                AVNumberOfChannelsKey: 2,
                AVEncoderAudioQualityKey:AVAudioQuality.high.rawValue
            ]
            audioRecorder = try AVAudioRecorder(url: getFileUrl(), settings: settings)
            audioRecorder.delegate = self
            audioRecorder.isMeteringEnabled = true
            audioRecorder.prepareToRecord()
            self.nextBtn.isHidden = true
        }catch let error {
            print("Error \(error)")
        }

當我點擊記錄按鈕時,它顯示錯誤NSOSStatusErrorDomain Code=561017449 "Session activation failed"

在這里我附上視頻。

https://share.icloud.com/photos/0a09o5DCNip6Rx_GnTpht7K3A

我沒有發表評論的名譽,否則我會發表評論。 (快到了哈哈!)你試過AVAudioSession.CategoryOptions.overridemutedmicrophoneinterrupt嗎?

編輯我對此進行的研究越多,似乎如果 Zoom 使用硬件,那么 iPhone 將無法記錄 stream。我認為這就是AVAudioSession.sharedSession()背后的想法是 singleton。

文檔

類型屬性

overrideMutedMicrophoneInterruption :一個選項,指示系統在使內置麥克風靜音時是否中斷音頻 session。

宣言

AVAudioSession.CategoryOptions { get }

討論

某些設備包含隱私功能,可在某些情況下在硬件級別使內置麥克風靜音,例如當您關閉 iPad 的 Smart Folio 保護蓋時。發生這種情況時,系統會中斷正在捕獲麥克風輸入的音頻 session . 在系統將麥克風靜音后嘗試開始音頻輸入會導致錯誤。 如果您的應用使用支持輸入和 output 的音頻 session 類別,例如 playAndRecord,您可以設置此選項以禁用默認行為並繼續使用 session。禁用默認行為可能有助於讓您的應用在錄制時繼續播放或監控靜音麥克風不會導致糟糕的用戶體驗。 當您設置此選項時,播放將繼續正常進行,並且麥克風硬件會生成樣本緩沖區,但值為 0。
重要的

嘗試將此選項用於不支持音頻輸入的 session 類別會導致錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM