Как вызвать привилегированный VideoStabilizationMode в GPUImage3? - PullRequest
0 голосов
/ 15 января 2020

Я нахожусь в процессе перестройки приложения iOS из Obj C / GPUImage в Swift / Gpuimage3. (И ранговый любительский кодер!)

Я ранее использовал:

m_videoCamera.videoCaptureConnection.preferredVideoStabilizationMode = AVCaptureVideoStabilizationModeOff;

, чтобы установить режим стабилизации, но в GPUImage3, кажется, нет доступных соединений захвата. Может кто-нибудь предложить способ доступа к захватам соединений для установки preferredVideoStabilizationMode?

1 Ответ

0 голосов
/ 23 января 2020

Оказалось, что это было не так сложно, перераспределив часть кода из GPUImage3 Вход камеры, я заставил его работать. Теперь с этим может быть какая-то очевидная проблема, но, похоже, она работает до сих пор

let device = videoCamera

if ((device?.inputCamera.activeFormat.isVideoStabilizationModeSupported(AVCaptureVideoStabilizationMode.standard))!){
        var captureConnection: AVCaptureConnection!
        if #available(iOS 13.0, *) {
            for connection in (device?.captureSession.connections)! {
                for port in connection.inputPorts {
                    if port.mediaType == AVMediaType.video {
                        captureConnection = connection
                        captureConnection.preferredVideoStabilizationMode = .standard
                        print("capture connection from within startStabilization is \(String(describing: captureConnection))")
                        print("preferred video stab mode set to on")
                        let currentStabMode = captureConnection.activeVideoStabilizationMode.rawValue
                        print("active stabilization mode from startStabilization is \(currentStabMode)")
                    }
                }
            }
        } else {
            // put in warning pop up if stabilization not available
            print("startStabilization failed")
        }
}
...