如何在AVCapture设备输入上禁用摄像头麦克风



我正在AVCaptureSession上设置麦克风,我需要麦克风开关。我应该怎么做?我真的需要captureSession?.removeInput(microphone),还是有一个简单的方法?

let microphone = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeAudio)
        do {
            let micInput = try AVCaptureDeviceInput(device: microphone)
            if captureSession.canAddInput(micInput) {
                captureSession.addInput(micInput)
            }
        } catch {
            print("Error setting device audio input: (error)")
            return false
        }

您始终可以只连接麦克风输入,然后使用开关决定如何处理音频缓冲区。如果开关关闭,则不要处理音频数据。我找到了一篇 objc.io 的文章,其中讨论了如何在使用 AVAssetWriter 写入数据之前设置单独的音频和视频缓冲区。

默认情况下,连接公开的所有 AVCaptureAudioChannel 对象都处于启用状态。您可以将 enable 设置为 false 以停止特定通道的数据流。

https://developer.apple.com/documentation/avfoundation/avcaptureaudiochannel/1388574-isenabled

最新更新