macOS swift AVCaptureSession sessionPreset не работает - PullRequest
0 голосов
/ 29 мая 2018

Я использую AVFoundation для захвата фото.Но независимо от того, что я изменил sessionPreset, вывод остается videoDevice.activeFormat Optional(<AVCaptureDeviceFormat: 0x608000001eb0> 'vide'/'2vuy' enc dims = 1280x720, pres dims = 1280x720 { 29.97 25.00 24.00 15.00 fps })

Все, что я хочу, это изменить вывод на высокое качество.

Весь мой код

    self.avCaptureSession = AVCaptureSession()

    let devices = AVCaptureDevice.devices()
    self.avCurrentCaptureDevice = devices!.last as? AVCaptureDevice
    do {
        self.avCaptureInput = try AVCaptureDeviceInput(device: self.avCurrentCaptureDevice)
    } catch {
    }

    do {
        try self.avCurrentCaptureDevice?.lockForConfiguration()
    } catch {
        return
    }

    self.avCaptureSession?.beginConfiguration()
    self.avCaptureSession?.addInput(self.avCaptureInput)

    self.avCaptureSession?.sessionPreset = AVCaptureSessionPreset320x240

    self.avOutput = AVCaptureVideoDataOutput()
    if (self.avCaptureSession?.canAddOutput(self.avOutput) != nil) {
        self.avCaptureSession?.addOutput(self.avOutput)
    }
    self.avOutput?.videoSettings = [(kCVPixelBufferPixelFormatTypeKey as NSString) : NSNumber(value: kCVPixelFormatType_32BGRA as UInt32)]
    self.avOutput?.alwaysDiscardsLateVideoFrames = true

    let queue: DispatchQueue = DispatchQueue(label: "myqueue",  attributes: [])
    self.avOutput?.setSampleBufferDelegate(self, queue: queue)

    self.avCaptureSession?.commitConfiguration()

    print("videoDevice.activeFormat", self.avCurrentCaptureDevice?.activeFormat! as Any)

1 Ответ

0 голосов
/ 31 мая 2018

Формат ввода и вывода захвата может отличаться.

Попробуйте сначала проверить самое большое измерение устройства ввода и количество кадров в секунду.Я предполагаю, что предустановка basiccaly применяется к выходному формату.

Также мой код может быть вашей помощью. AVCaptureManager

...