我正在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
}
答案 0 :(得分:9)
您可以随时将麦克风输入连接起来,然后使用开关决定如何处理音频缓冲区。如果开关关闭则不处理音频数据。我找到了objc.io article,讨论了在使用AVAssetWriter写入数据之前如何设置单独的音频和视频缓冲区。
答案 1 :(得分:1)
默认情况下,启用了由连接公开的所有AVCaptureAudioChannel对象。您可以将enabled设置为false以停止特定通道的数据流。
https://developer.apple.com/documentation/avfoundation/avcaptureaudiochannel/1388574-isenabled