AVCaptureSession.addInput(_:) работает очень медленно при попытке записи видеоIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 AVCaptureSession.addInput(_:) работает очень медленно при попытке записи видео

Сообщение Anonymous »

Я работаю над приложением для камеры, которое позволяет пользователям снимать фотографии и видео (со звуком). В ходе тестирования я понял, что если пользователь разговаривает по FaceTime и пытается использовать камеру, она перестает работать. Видеопоток зависает и выдает ошибки выполнения, подобные следующим:

AVError(_nsError: Error Domain=AVFoundationErrorDomain Code=-11800 «Операция не может быть завершена» " UserInfo={NSLocalizedFailureReason=Произошла неизвестная ошибка (561017449), NSLocalizedDescription=Операция не может быть завершена, NSUnderlyingError=0x300723240 {Error Domain=NSOSStatusErrorDomain Code=561017449 "(null)" UserInfo={AVErrorFourCharCode='!pri'}} })

Покопавшись, я выяснил, что виновник пытается активировать микрофон на моем AVCaptureSession вот так:

Код: Выделить всё

if let audioDevice = AVCaptureDevice.default(for: .audio),
let audioDeviceInput = try? AVCaptureDeviceInput(device: audioDevice),
session.canAddInput(audioDeviceInput) {
session.addInput(audioDeviceInput)
}
Изменение казалось простым: удалите этот фрагмент кода из логики настройки AVCaptureSession и просто переместите его вправо, прежде чем пользователь попытается записать видео. Проблема в том, что если я сделаю это, камера будет работать так, как ожидалось, но между нажатием кнопки пользователем и началом записи видео будет значительная задержка, подача изображения с камеры даже отключится на секунду. Если код настройки микрофона выполнен, когда я настраиваю AVCaptureSession, никакой задержки, когда пользователь нажимает кнопку записи, не происходит.
Я пытался запустить это код внутри (и снаружи) DispatchQueue, который я использую для обработки всей логики камеры, и ничего не изменилось. Я также пытался добавить его между session.beginConfiguration() и session.commitConfiguration(), и это тоже ничего не изменило.

Подробнее здесь: https://stackoverflow.com/questions/784 ... cord-video
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»