AVAssetReader, AVAssetWriterを利用して逆再生動画を生成する
{:width=“400px”}
動画の逆再生処理を実装するために、AVUtilitiesというObjCで書かれたものがあったので、それをSwiftで置き換えてみました。
やっていることは大まかに下記になります。
- AVAssetReaderを利用して、CMSampleBufferRefの配列を読み込み
- 画像データを抜き出し、反転する
- AVAssetWriterを使ってoutputURLのファイルに書き出し
- 書き出しが完了したらcompletionHandlerを実行
実際にコードを見たほうが早いと思うので、こちらに。
{% gist fcbfe0de3f7a7b076647169cb45f58b3 %}
こんな感じで実行できます。
AVUtilities.reverse(originalAsset, outputURL: output, completion: { [unowned self] (reversedAsset: AVAsset) in
// do something.
})
参考資料