[iPhone] AVCaptureVideoDataOutput ビデオで静止画撮影する

Photo by Grant Ritchie on Unsplash
前に UIImagePickerControllerAVCapturePhotoOutput でカメラを扱いましたが
AVCaptureVideoDataOutput でも静止画を撮影できます。ただし基本的には動画撮影用です。
画面タップでシャッターを切る例です。余談ですがプレビュー無しの無音カメラができてしまいます。

Swift 5.1
Xcode 11.3.1

AVCaptureVideoDataOutput

 
iPhoneでは写真の静止画フォーマットが「HEIF」、動画は「HEVC(H.265)」と新しいフォーマット(形式)になっています。
ちょっと忘れがちでハマることがありますので
 

 

Camera使用上の許可

 

Cameraを扱う注意点として、

  1. 実機で試す
  2. Info.plistの編集
    • 以下の設定をInfo.plistに記述しないとエラーになります。
      UIImagePickerController による Camera撮影

 

設定

 
カメラ設定について抜粋ですが、

背面、前面カメラの切り替え
position: .back
position: .front

キャプチャ・クオリティの設定は
VideResolution = AVCaptureSessionPresetHigh
としていますが、その他の設定もできます

  1. AVCaptureSessionPresetPhoto
    • 写真用の最大解像度, ビデオ出力ではサポートされない
  2. AVCaptureSessionPresetHigh
    • 最高の録画品質
  3. AVCaptureSessionPresetMedium
    • WiFi共有用
  4. AVCaptureSessionPresetLow
    • 3G共有
  5. AVCaptureSessionPreset352x288
    • CIF
  6. AVCaptureSessionPreset640x480
    • VGA
  7. AVCaptureSessionPreset1280x720
    • HD, 720p
  8. AVCaptureSessionPresetiFrame960x540
    • 960×540のiFrame ビデオ
  9. AVCaptureSessionPresetiFrame1280x720
    • 1280×720iFrame ビデオ
 

サンプルコード

 
カメラを起動し、キャプチャー画面をタップして写真を保存する基本的なコードです。

Tap を受け取るために、UIGestureRecognizerDelegate をdelegateで設定します

ViewController.swift

 

これで実機でカメラを起動させて、画面タップで写真が保存されているか確認してください。

 
関連:

 

一人でアプリ開発の限界を感じたら

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンライン・スクールがいいと思います。


TECH ACADEMY
自宅にいながら1時間でプログラミング基礎を習得

こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン



とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約20,000名の受講生と300社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


Play Ground
本業と並行してやるには月額制なのがありがたいです。


無料で転職まで
これはiOSアプリ限定ではありませんが無料です
その代わり就職することを前提にしたスクールで「エンジニアになって職を得たい」のであれば手っ取り早いかもしれません


誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:


シェアする

  • このエントリーをはてなブックマークに追加

フォローする