【问题标题】:How to disable camera microphone on AVCapture device input如何在 AVCapture 设备输入上禁用摄像头麦克风
【发布时间】:2018-01-08 22:39:43
【问题描述】:

我在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
        }

【问题讨论】:

  • 我已经尝试了 removeInput() 方法,但是当再次为麦克风添加输入()时,这会在预览层中创建一个混蛋。你有没有找到比公认的更好的解决方案?

标签: ios swift avcapturesession avcapturedevice


【解决方案1】:

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

【讨论】:

  • 你是对的,但我正在使用 captureSession 委托方法来开始和停止录制。所以,这个解决方案对我不起作用。
【解决方案2】:

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

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

【讨论】:

  • 这是错误的答案 - 这被标记为 iOS 并且适用于 macOS 10.7+
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
  • 2021-07-08
相关资源
最近更新 更多