アプリの画面を録画する(2)AVAssetWriterではまった話
アプリの画面を録画する(1)ReplayKitをあきらめた話
↑この続き。ReplayKitじゃなく自前でなんとかしよう!と調べてみた。
ios - How do I export UIImage array as a movie? - Stack Overflow
[Objective-C] 複数枚の静止画から動画を生成する - Qiita
↑このあたりを参考にさせて頂いた。
ところが作成してカメラロールに保存された動画ファイル(のスクショ)は

↑こんな感じで何やらずれている。ただし一応動画にはなってる。
あー、こういうずれはきっと、、、と予想した原因がことごとくハズレで結構はまった。
pixel formatの設定やアルファ値の扱い、CVPixelBufferRefを得る方法、カメラロールへの保存方法まで調べていたのだが。
ようやくわかったのは元の静止画像の横幅のサイズが16の倍数でないとダメ、ということであった。
【Swift 3】UIImageの配列から動画を生成する【AVAssetWriter】 | うるおいらんど
↑こちらの記事に書いてはいるけど、リファレンス、ヘッダーに書いてるのは見つけられなかった。
ちなみに元画像の横幅サイズが16の倍数でなくても、コード上でソース画像の横幅を16の倍数にしておけばそれなりに表示はしてくれた。縦横比の問題なんかはあるだろうけど。
縦方向は何ピクセルでもいいみたい。高さ457pxの画像で試したけどちゃんと動いた。457は素数らしい。
↑この続き。ReplayKitじゃなく自前でなんとかしよう!と調べてみた。
ios - How do I export UIImage array as a movie? - Stack Overflow
[Objective-C] 複数枚の静止画から動画を生成する - Qiita
↑このあたりを参考にさせて頂いた。
ところが作成してカメラロールに保存された動画ファイル(のスクショ)は

↑こんな感じで何やらずれている。ただし一応動画にはなってる。
あー、こういうずれはきっと、、、と予想した原因がことごとくハズレで結構はまった。
pixel formatの設定やアルファ値の扱い、CVPixelBufferRefを得る方法、カメラロールへの保存方法まで調べていたのだが。
ようやくわかったのは元の静止画像の横幅のサイズが16の倍数でないとダメ、ということであった。
【Swift 3】UIImageの配列から動画を生成する【AVAssetWriter】 | うるおいらんど
↑こちらの記事に書いてはいるけど、リファレンス、ヘッダーに書いてるのは見つけられなかった。
ちなみに元画像の横幅サイズが16の倍数でなくても、コード上でソース画像の横幅を16の倍数にしておけばそれなりに表示はしてくれた。縦横比の問題なんかはあるだろうけど。
縦方向は何ピクセルでもいいみたい。高さ457pxの画像で試したけどちゃんと動いた。457は素数らしい。
スポンサーサイト