параллельная работа над функциями записи видео и телефонных звонков в iOS swift3 - PullRequest
0 голосов
/ 29 октября 2018

У меня есть два метода, такие как функция телефонного звонка и функции записи видео с камеры. Эти две функции работают нормально индивидуально. Но когда я использую эти две функции одновременно, функция камеры не работает. Как я могу вызвать эти два метода одновременно для правильной работы в ios swift. Я обнаружил, что ошибка заключается в том, что звук включается обеим функциям одновременно. вот почему это сбой. Могу ли я отключить звук видеозаписи до завершения телефонного звонка?

func makeCall(phoneNumber: String) {
    let formattedNumber = phoneNumber.components(separatedBy:
        NSCharacterSet.decimalDigits.inverted).joined(separator: "")

    let phoneUrl = "tel://\(formattedNumber)"
    let url:NSURL = NSURL(string: phoneUrl)!

    if #available(iOS 10, *) {
        UIApplication.shared.open(url as URL, options: [:], completionHandler:
            nil)


    } else {
        UIApplication.shared.openURL(url as URL)


    }
}

func videoMethodNew ()

{

    let devices = AVCaptureDevice.devices(for: AVMediaType.video)


    guard AVCaptureDevice.default(for: .audio) != nil else { return }

    for device in devices {
        if (device as AnyObject).position == AVCaptureDevice.Position.back{


            do{

                let input = try AVCaptureDeviceInput(device: device )

                if captureSession.canAddInput(input){

                    captureSession.addInput(input)
                    sessionOutput.outputSettings = [AVVideoCodecKey : AVVideoCodecJPEG]

                    if captureSession.canAddOutput(sessionOutput){

                        captureSession.addOutput(sessionOutput)

                        previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
                        previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
                        previewLayer.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
                        cameraView.layer.addSublayer(previewLayer)

                        previewLayer.position = CGPoint(x: self.cameraView.frame.width / 2, y: self.cameraView.frame.height / 2)
                        previewLayer.bounds = cameraView.frame


                    }

                    captureSession.addOutput(movieOutput)

                    captureSession.startRunning()

                    self.handleCaptureSession()

                }

            }
            catch{

                print("Error")
            }

        }
    }

}

1 Ответ

0 голосов
/ 01 ноября 2018

Надеюсь, это поможет вам.

В соответствии с вашей ошибкой -11818 это происходит из-за того, что AVErrorSessionWasInterrupted, как и другие приложения, прервал декодирование видео. Для решения этой проблемы необходимо включить AVAudioSessionCategoryOptions.MixWithOthers. Для получения дополнительной информации используйте эту ссылку: - введите описание ссылки здесь

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...