Проблема с красной полосой, когда приложение переходит в фоновый режим (с использованием AVCaptureSession) и рывок AVCamPreviewLayer - PullRequest
2 голосов
/ 14 марта 2019

Я разработал пользовательские функции камеры, используя образец кода Apple AVCAM , и в моем приложении включены фоновые режимы , что вызывает проблему с красной полосой.

Я создаю AVCaptureSession, а затем добавляю входы (.Video, .Audio) и выходы в сеансе.

Ниже приведен код для добавления аудиовхода в сеанс

var audioDeviceInput:AVCaptureDeviceInput!

guard let audioDevice = AVCaptureDevice.default(for: AVMediaType.audio) else { return }

    do {
        audioDeviceInput = try AVCaptureDeviceInput(device: audioDevice)
    } catch let error {
        audioDeviceInput = nil
        NSLog("Could not create audio device input: \(error)")
    }

self.session.addInput(audioDeviceInput)

Теперь, когда пользователь нажимает кнопку «Домой», красная полоса мигает на экране iPhone в течение миллисекунд, а затем исчезает (указывая на использование микрофона), и я хочу избежать этой красной полоски.

После некоторых исследований и разработок я узнал, что это происходит из-за добавления аудиовхода в сеанс (код добавления аудиовхода указан выше)

Что я уже сделал? Чтобы решить эту проблему, я только добавляю аудиовход, когда пользователь начинает запись видео, и удаляю аудиовход, когда пользователь останавливает видео. Это фактически решило проблему с красной полосой, но это вызывает рывок в предварительном просмотре, что действительно раздражает. Теперь я хочу решить эту проблему, но не знаю, как это сделать.

Любая помощь будет оценена.

...