見出し画像

【iOS動画処理】CMSampleBuffer, CVPixelBuffer の加工・合成

Appleのカメラ系サンプルの中に、「AVMultiCamPiP: Capturing from Multiple Cameras」というサンプルがある。

このサンプルでは、`AVCaptureMultiCamSession` を使ってフロント・バックカメラでの撮影を同時に行い、リアルタイムに合成して動画ファイルに書き出す。

画像1

(フロント・バックで同時撮影し、PiP的な見せ方の動画として合成する)

このサンプルにおける、2つのカメラから得られた `CMSampleBuffer` を加工する実装が、自分でゼロから(リファレンスなしで)やるには大変そうな部分が多かったので、ここにコードリーディングしたエッセンスをまとめておく。

なお、AVCaptureMultiCamSession まわりの実装や、AVCaptureVideoDataOutput な CMSampleBuffer を取得して CVPixelBuffer を取り出すまでの実装や、AVAssetWriter でファイルに書き出すあたりの実装は本記事では割愛する。

PiPVideoMixer.swift

動画の加工処理の核となる実装が入っているのが PiPVideoMixer クラス。

ここから先は

8,904字
文章やサンプルコードは多少荒削りかもしれませんが、ブログや書籍にはまだ書いていないことを日々大量に載せています。たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

技術的なメモやサンプルコード、思いついたアイデア、考えたこと、お金の話等々、頭をよぎった諸々を気軽に垂れ流しています。

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/