photo credit: fveronesi1 Little Swift at nest – Kakum NP – Ghana 14_S4E2783 via photopin (license)

iPhoneで好きな形の動画が撮れたら面白いのにな

ある時そう思ったので、その機能を提供するライブラリを作った。

screencapture

今回紹介するFlexibleAVCaptureを使えば、こんな風な長方形の動画を撮影することができる。
(スクリーンキャプチャは、撮影する動画の形を設定しているシーン)

その名は FlexibleAVCapture

FlexibleAVCaptureは CocoaPodsで提供するiOSアプリ開発用のライブラリだ。

フレキシブルな動画を撮影するために以下のものを提供している:

  • 動画撮影のためのセッション管理
  • カメラのプレビュー画面
  • 動画撮影の設定UI
    • デフォルトのボタンやスライダーがセットされている
    • 好みのUIに置き換えることも可能
  • ズームやフォーカスの機能
    • ピンチイン/ピンチアウトのジェスチャーでズームが働く
    • タップした箇所にあわせてフォーカスと露光を調整する
  • その他動画撮影に関する設定を行うためのAPI

デフォルトの設定が用意されているので、ほとんどコードを書くことなく利用することもできる。

CocoaPods と GitHub にてソースコードを公開している。

CocoaPods:
https://cocoapods.org/pods/FlexibleAVCapture

GitHub:
https://github.com/hahnah/FlexibleAVCapture

FlexibleAVCaptureの導入・利用

FlexibleAVCaptureを使って本記事冒頭のスクリーンキャプチャにあるようなものを実装する方法を紹介していく。

利用するための前提条件

  • iOS 11.0 以降をターゲットとしていること
  • CocoaPods をプロジェクトに導入していること

インストール

  1. あなたのプロジェクトのPodfileに以下の行を追記する
    pod 'FlexibleAVCapture'
  2. pod installとコマンドを打つとインストールが始まる

FlexibleAVCaptureを使ってみる

あなたのViewCotrollerにおいて

import FlexibleAVCapture

とすることで、FlexibleAVCaptureViewController,FlexibleAVCaptureDelegateが利用できるようになる。これらについて以下のことを行えば良い。

  • ViewController にFlexibleAVCaptureDelegateプロトコルを継承させ、didCapture(withFileURL fileURL: URL)メソッドに動画撮影後の処理(フォトライブラリに保存するなど)を実装する
  • FlexibleAVCaptureViewControllerインスタンスを作成し、delegateを設定する

例えば次のように実装する。

import UIKit
import FlexibleAVCapture

class ViewController: UIViewController, FlexibleAVCaptureDelegate {

    let flexibleAVCaptureVC: FlexibleAVCaptureViewController = FlexibleAVCaptureViewController()

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        self.flexibleAVCaptureVC.delegate = self
        self.present(flexibleAVCaptureVC, animated: true, completion: nil)
    }

    func didCapture(withFileURL fileURL: URL) {
        print(fileURL)
    }

}

上記実装例では、記事冒頭のスクリーンキャプチャにあるような画面が表示され、録画が完了すると録画ファイルの(テンポラリーな)URLをログに出力する。

わずかな実装で FlexibleAVCapture を利用できることが分かるだろう。

詳細な設定

さまざまな詳細設定をするためのAPIも提供している。例えば:

  • フロントカメラ/バックカメラのどちらを使うかの設定
  • 録画画質の設定
  • 録画の上限時間の設定
  • デフォルトのUI(ボタン/スライダー)を別のボタン/スライダーで置き換える
  • 録画開始/終了時に音を鳴らすかどうかの設定

詳しくはAPIリファレンスを参照

ダウンロードして試せるアプリ例: Flex Camera

FlexibleAVCaptureを使って簡単な iOSアプリ を作成し、AppStoreにリリースしている。
どんなものが作れるのか、参考として触ってみるのも良いだろう。

Flex Camera アプリはこちらの紹介記事はこちら

このアプリはソースコードも公開しているので、実装方法の参考にもなれば幸いだ。
https://github.com/hahnah/FlexCamera


hahnah

はーな Webエンジニア。モバイルアプリも少々。Elmが好き。

0件のコメント

コメントを残す

メールアドレスが公開されることはありません。