Привет, я использую Affectiva Affdex ios SDK. Теперь у меня 2 просмотра.
UIView -> Где я запускаю поток камеры. Код для того же здесь:
func allConfig(withCamView cams:UIView) { let captureDevice = AVCaptureDeviceDiscoverySession(deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera], mediaType: AVMediaTypeVideo, position: .unspecified) for device in (captureDevice?.devices)! { if device.position == .front{ do { let input = try AVCaptureDeviceInput(device: device) if session.canAddInput(input) { session.addInput(input) } if session.canAddOutput(previewOutput) { session.addOutput(previewOutput) } previewLayer = AVCaptureVideoPreviewLayer(session: session) previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill previewLayer.connection.videoOrientation = .portrait cams.layer.addSublayer(previewLayer) previewLayer.position = CGPoint(x: cams.frame.width/2, y: cams.frame.height/2) previewLayer.bounds = cams.frame session.startRunning() } catch let avError { print(avError) } } } }
другая ячейка UICollectionView, где я запускаю детектор. Код для этого здесь:
func createDetector() { destroyDetector() let captureDevice = AVCaptureDeviceDiscoverySession(deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera], mediaType: AVMediaTypeVideo, position: .unspecified) for device in (captureDevice?.devices)! { if device.position == .front{ EMDetector = AFDXDetector(delegate: self, using: device, maximumFaces: 2, face: LARGE_FACES) EMDetector.maxProcessRate = 5 // turn on all classifiers (emotions, expressions, and emojis) EMDetector.setDetectAllExpressions(true) EMDetector.setDetectAllEmotions(true) EMDetector.setDetectAllAppearances(true) EMDetector.setDetectEmojis(true) // turn on gender and glasses EMDetector.gender = true EMDetector.glasses = true // start the detector and check for failure let error: Error? = EMDetector.start() if nil != error { print("Some Faliure in detector") print("root cause of error ------------------------- > \(error.debugDescription)") } } } }
Эти представления занимают 50-50 места на экране.
Проблема:
Всякий раз, когда я пытаюсь запустить приложение, поток камеры зависает через одну секунду. И это потому, что детектор запускается. Теперь, если вы посмотрите пример приложения github (https://github.com/Affectiva/affdexme-ios/tree/master/apps/AffdexMe), также доступный в магазине приложений. вид с камеры все еще включен, даже когда они обнаруживают эмоцию.
Я даже пытался объединить две функции, а затем вызвать функцию, но каким-то образом одна функция отменяет другую.
как это обойти?
Спасибо