4

AVFoundationiOS で正方形のビデオ出力を取得する方法はありますか?

CMSampleBufferビデオのすべてのフレーム ( ) の処理に OpenGL を使用しています。すべてのフレーム
が回転するので、トリミングして回転する必要がありCMSampleBufferます。しかし、私はそれを行う方法がわからないので、プロパティ(videoSettings)を設定することで、すでにトリミングおよび回転されたフレームを取得する方法があると信じていAVCaptureVideoDataOutputます.

私はそれをグーグル、グーグル、グーグルで検索しましたが、何も見つかりませんでした。迅速なコード例は素晴らしいでしょう。

アップデート:

Swift での私の完全な最終的な解決策:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    captureSession = AVCaptureSession()
    captureSession!.sessionPreset = AVCaptureSessionPreset640x480

    let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
    var error: NSError?
    var input: AVCaptureDeviceInput!
    do {
        input = try AVCaptureDeviceInput(device: backCamera)
    } catch let error1 as NSError {
        error = error1
        input = nil
    }
    if error == nil && captureSession!.canAddInput(input) {
        captureSession!.addInput(input)
        stillImageOutput = AVCaptureStillImageOutput()
        stillImageOutput!.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG, kCVPixelBufferPixelFormatTypeKey: Int(kCVPixelFormatType_32BGRA)]
        if captureSession!.canAddOutput(stillImageOutput) {
            captureSession!.addOutput(stillImageOutput)
        }
    }
    videoOutput = AVCaptureVideoDataOutput()
    videoOutput!.videoSettings = [kCVPixelBufferPixelFormatTypeKey: Int(kCVPixelFormatType_32BGRA), AVVideoWidthKey : 100, AVVideoHeightKey: 100]
    videoOutput!.setSampleBufferDelegate(self, queue: dispatch_queue_create("sample buffer delegate", DISPATCH_QUEUE_SERIAL))

    if captureSession!.canAddOutput(self.videoOutput) {
        captureSession!.addOutput(self.videoOutput)
    }

    videoOutput!.connectionWithMediaType(AVMediaTypeVideo).videoOrientation = AVCaptureVideoOrientation.PortraitUpsideDown
    videoOutput!.connectionWithMediaType(AVMediaTypeVideo).videoMirrored = true
    captureSession!.startRunning();
}

それは私にとって完全にビデオ出力をミラーリングおよび回転させます! しかし、それはトリミングではありません!

4

1 に答える 1