AVAssetReader, AVAssetWriterを利用して逆再生動画を生成する

!Imgurl{:width=“400px”}

動画の逆再生処理を実装するために、AVUtilitiesというObjCで書かれたものがあったので、それをSwiftで置き換えてみました。

やっていることは大まかに下記になります。

  1. AVAssetReaderを利用して、CMSampleBufferRefの配列を読み込み
  2. 画像データを抜き出し、反転する
  3. AVAssetWriterを使ってoutputURLのファイルに書き出し
  4. 書き出しが完了したらcompletionHandlerを実行

実際にコードを見たほうが早いと思うので、こちらに。

{% gist fcbfe0de3f7a7b076647169cb45f58b3 %}

こんな感じで実行できます。

AVUtilities.reverse(originalAsset, outputURL: output, completion: { [unowned self] (reversedAsset: AVAsset) in
   // do something.
})

参考資料