Guest User

Untitled

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