AIR for iOS でカメラの取り扱いについて

AIR for iOS でカメラの取り扱いについていろいろ調査してみて思ったことを整理してみます。

3つのタイプでカメラを取り扱うことができ、これらを比較します。

flash.media.Camera vs flash.media.CameraUI vs ANE 拡張による Camera

ANE 拡張による Camera は diadraw-air-camera-native-extension を使用した例です。

以下、比較を表にまとめてみました。

flash.media.Camera flash.media.CameraUI ANE拡張
取り扱いの容易さ X
表示パフォーマンス X
撮影ショット取得パフォーマンス X
高解像度画像の取得 X
表示のカスタマイズ X
拡張性 X X

以下、それぞれ補足を。

取り扱いの容易さ

ANE以外は、さくっと数行で実現できるので簡単。
ANEを使用しての場合は、自分の環境で動かないなどあると、自分で build しなおすなどしなくてはならないのでちょっと敷居が高め。

表示パフォーマンス

ANE以外はまあ普通。
ANEの場合は、flash側で取得したBitmapDataにmatrixをかけたりする必要があったりするので
パフォーマンスが低下しがち。
その辺の処理をnativeの方に持っていけば改善するのかも。

撮影ショット取得パフォーマンス

とにかく、flash.media.CameraUI が糞っぽい。
flash.media.Camera は、撮影のタイミングで BitmapData.drawして取得する感じなので軽い。
ANEは、BitmapData が枚フレ枚に渡ってくる感じなので、撮影中も、撮影時も特に差がない。

高解像度画像の取得

flash.media.Camera の場合は、attach した Video を BitmapData.drawして取得するタイプなので高解像の取得が無理。
他は、大きく取れると思う。

表示のカスタマイズ

flash.media.Camera、ANE は自由に可能。
flash.media.CameraUI は、下からニョキッとお決まりのカメラUIが出てくるタイプなので、
カスタマイズ不可能のよう。

拡張性

これまでの内容からわかるよう、
flash.media.Camera、flash.media.CameraUI は拡張性がない。
AIR SDK のアップデートを待つしかない感じ?だと思われる。
ANEは当然自由。diadraw-air-camera-native-extension では、
タップして、フォーカスも実現できる。

結論

flash.media.CameraUI は使わない
撮影後画像の取得がかなり遅かったり、何度も呼び出すとおかしくなったりしたのでちょっと使用が現実的でないので却下。

パフォーマンス重視なら flash.media.Camera
リアルタイムにカメラに映る映像を表示させたいなら flash.media.Camera が非常に軽く動作するのでおすすめ。

拡張性重視なら ANE を選択
フォーカス対応などもできるので、拡張性重視なら ANE の1択です。

ということで…..

古い端末は、flash.media.Camera、
新しめの端末は、ANEを使う!というかたちで、処理分けするのがBest!な気がします。