ハダ
「iOSの映像の外部出力」シリーズとして、iPadからHDMIなどを経由した外部出力に関する内容の第3回になります。
今回は弊社アプリColorcodeVJの開発時に遭遇した問題についてまとめます。
- Appleサンプルから見る基本的な仕組み
- 外部出力の環境情報
- CCVJ開発における外部出力の問題
3.CCVJ開発における外部出力に関する問題
3-1.バージョンアップによる問題
外部出力はバージョンアップによって、出力の細かい修正が発生する事が多いです。
CADisplayLink
OSバージョンアップで動かなくなった場合、CADisplayLinkに変更やコメントがないか探すと良いです。
特に端末側の画面は正常に表示されて、外部出力だけ正常に表示されない場合は何か変更があった可能性があります。
AirPlayの対応
iOSにAirPlayが搭載されて特殊な対応処理をする必要はなく、AirPlayは勝手に動作していました。
外部出力自体がAirPlayかどうかをプログラム側が意識する必要がありません。
コネクタ別の動作確認
iOSではなくコネクタ的にDock→Lightningに変更された為、動作確認の範囲が広がってしまいました。
CCVJの動作確認は2種類の端子で動作確認していますが、これから先にリリースする対象としてはなるべくLightningだけで検証作業をして、Dockは卒業したいところです。
ちなみに、コネクタの切り替わりは以下のタイミングでした。
Dock
iPad3まで
Lightning
iPad4・iPadAir以降
iPad1はiOSのアップデートがiOS 5.1.1終了しましたが、iPad2以降は現在でもアップデートの対象になっています。
端末の種類ごとのアプリのリリース制限はできないので、Lightning以降をターゲットにしたくても難しいところです。
3-2.OpenGL
最後はCCVJで解決できていない外部出力の問題の話になります。
かつてCCVJ はOpenGLで外部で表示した画面をキャプチャし内部で利用しようとしていましたが、CADisplayLinkの影響でキャプチャによる遅延が無視できないレベルになってしまいました。その為、外部出力中のプレイ画面は表示を簡易化した表示になっています。
この問題は今後解決したい課題として残っています。
以上3回に渡り、外部出力に関係する情報をまとめてみました。
外部出力の機能は、見せたい表示と端末側の表示を切り分けられるという点で、利用範囲の広い機能になっています。
新規に外部出力を利用するアプリを開発される方の参考になれば幸いです。