【iOS動画処理】CMSampleBuffer, CVPixelBuffer の加工・合成
Appleのカメラ系サンプルの中に、「AVMultiCamPiP: Capturing from Multiple Cameras」というサンプルがある。
このサンプルでは、`AVCaptureMultiCamSession` を使ってフロント・バックカメラでの撮影を同時に行い、リアルタイムに合成して動画ファイルに書き出す。
(フロント・バックで同時撮影し、PiP的な見せ方の動画として合成する)
このサンプルにおける、2つのカメラから得られた `CMSampleBuffer` を加工する実装が、自分でゼロから(リファレンスなしで)やるには大変そうな部分が多かったので、ここにコードリーディングしたエッセンスをまとめておく。
なお、AVCaptureMultiCamSession まわりの実装や、AVCaptureVideoDataOutput な CMSampleBuffer を取得して CVPixelBuffer を取り出すまでの実装や、AVAssetWriter でファイルに書き出すあたりの実装は本記事では割愛する。
PiPVideoMixer.swift
動画の加工処理の核となる実装が入っているのが PiPVideoMixer クラス。
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/