我希望获取AVCaptureConnection音频并在我需要时启用/禁用它,而无需添加/删除输入而不会延迟

时间:2015-05-17 17:24:30

标签: xcode avcapturesession

标题说明了一切。不知道怎么做滞后。当我说滞后时,似乎当你试图改变连接状态(connection.enabled状态)时,它会冻结avcapturesession来进行更改。无论如何围绕这个?这是我目前用于获取音频连接和更改状态的代码。如果我在开始录制之前运行此功能,它会冻结一秒钟,然后在完成录制后将其关闭,但这会再次冻结。这不是一个很好的用户体验。

func EnableDisableAudioDevice(enableAudio :Bool)
{
    var audioInput :AVCaptureDeviceInput?
    if (enableAudio) {
        for input in appDel.captureSession.inputs as! [AVCaptureDeviceInput]
        {
            if input.device.hasMediaType(AVMediaTypeAudio)
            {
                audioInput = input
                break
            }
        }
        if (audioInput != nil) {
            for conn in audioInput!.ports as! [AVCaptureInputPort]
            {
                if conn.mediaType == AVMediaTypeAudio
                {
                    conn.enabled = true
                    break
                }
            }
        }
    }
    else {
        for input in appDel.captureSession.inputs as! [AVCaptureDeviceInput]
        {
            if input.device.hasMediaType(AVMediaTypeAudio)
            {
                audioInput = input
                break
            }
        }
        if (audioInput != nil) {
            for conn in audioInput!.ports as! [AVCaptureInputPort]
            {
                if conn.mediaType == AVMediaTypeAudio
                {
                    conn.enabled = false
                    break
                }
            }
        }
    }
}

更新:

我能够发现添加音频输入似乎不是录制显示的原因,这是因为我的AVCaptureMovieFileOuput。如果您在录制之前将该输出添加到捕获会话中然后添加音频输入,它会说你正在录音。不确定是否有意或有bug。在添加输出时,仍然有问题试图找到解锁应用程序原因的解决方案。

由于

0 个答案:

没有答案