标题说明了一切。不知道怎么做滞后。当我说滞后时,似乎当你试图改变连接状态(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。在添加输出时,仍然有问题试图找到解锁应用程序原因的解决方案。
由于