ios - 在 iOS swift3 中并行处理视频录制和通话功能

标签 ios iphone swift

我有两种方法,比如打电话功能和摄像头录像功能。这两个功能单独工作得很好。但是当我同时使用这两个功能时,相机功能不起作用。我如何一次调用这两个方法才能在 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")
            }

        }
    }

}

最佳答案

希望这对您有帮助。

根据您的错误-11818,发生这种情况意味着 AVErrorSessionWasInterrupted 像其他应用程序一样中断了您的视频解码。要解决此问题,您需要启用 AVAudioSessionCategoryOptions.MixWithOthers。 欲了解更多信息,请使用此链接:- enter link description here

谢谢

关于ios - 在 iOS swift3 中并行处理视频录制和通话功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53040117/

相关文章:

objective-c - 将 Xcode 项目转换为 ARC 时出现问题

ios - 展开 UILabel 文本

ios - 解决配置文件问题后,iPhone 设备中的应用程序安装失败并丢失设备管理

iOS 禁用推送 segue 动画

ios - 如何向每个单元格添加一个按钮?

ios - 使用 alamofire 的多部分/表单数据

ios - 仅针对 1 个 tableViewCell 项目的颜色更改每 10 个项目复制一次

ios - Swift 中的字符串到 NSNumber

iphone - 将 UIImage 转换为黑白而非灰度以使用超正方体

swift - 如何在 Swift 中打印转义序列字符?