Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### カメラ映像を表示する最小構成
- ##### 事前準備
- カメラへアクセスするため、事前にInfo.plist > "Privacy - Camera Usage Description"をセットしておく
- ````swift
- //カメラへアクセスするため、事前にInfo.plist > "Privacy - Camera Usage Description"をセットしておく
- func setupVideoCapture () {
- //カメラデバイス(ビデオ)を設定し、入力用デバイスにカメラデバイスを登録し、入力用デバイスをセッションに登録する(iOS 10以降)
- guard let deviceSetting = AVCaptureDevice.default(AVCaptureDevice.DeviceType.builtInWideAngleCamera, for: AVMediaType.video, position: .back) else { return }
- guard let deviceInput = try? AVCaptureDeviceInput(device: deviceSetting) else { return }
- // 出力データ(iOS 10以降)を生成し、セッションに登録する
- let deviceOutput = AVCaptureVideoDataOutput()
- // ピクセルフォーマット(32bit BGRA)
- deviceOutput.videoSettings = [kCVPixelBufferPixelFormatTypeKey as AnyHashable : Int(kCVPixelFormatType_32BGRA)] as! [String : Any]
- // AVCaptureVideoDataOutputSampleBufferDelegateプロトコルに含まれているcaptureOutputメソッドを呼び出すように設定する
- deviceOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "videoQueue"))
- //入力データーと出力データを仲介し、管理するためのセッションに生成
- let captureSession = AVCaptureSession()
- captureSession.addInput(deviceInput)
- captureSession.addOutput(deviceOutput)
- captureSession.startRunning()
- // カメラ映像をビューに表示する(ここでは全画面表示)
- let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
- view.layer.addSublayer(previewLayer)
- previewLayer.frame = view.frame
- }
- /*
- AVCaptureVideoDataOutputSampleBufferDelegateのデリゲートで、
- フレームごとに呼ばれるメソッド 映像データの加工などは、このメソッド内で行う
- */
- func captureOutput(_ output: AVCaptureOutput, didDrop sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
- }
- ````
Add Comment
Please, Sign In to add comment