#はじめに
Unity 5.6 から Video Player component が追加されました。
MP4などのムービーを簡単に全画面で流したり、テクスチャに貼り付けて再生できたりできる便利なコンポジションなのですが、
こちらも使っている際にぶつかった現象について備忘録も兼ねてまとめておきます。
#開発環境
Unity 5.6.3f1 (64-bit)
#現象
VideoPlayerでムービーを再生するとAndroid端末で動画がカクつく。
iOS端末やUnityシミュレーター上ではカクつかない。
現象が起きたのは音声ありMP4だったのですが、
・ムービー素材のビットレートやフレームレートを下げたり無音に変えたりしましたが変化なし。
・VideoPlayerコンポジションの設定を弄り回しましても変化なし。
という状態でした。
#原因
マルチスレッドレンダリング設定が有効になっているとカクつくようです。
こちらの設定はiOSにはないため、Androidのみで起きていたわけです。
恐らくレンダリングとムービーのデコードを別スレッドで制御しているため、
お互いに待ちが発生してカクつく原因になっているのではないかと予想されます。
#対応方法
マルチスレッドレンダリングを止めてやる。
Unityエディタ上の[Edit]->[Project Settings]->[Player]の[Android]タブ内に、
[Other Settings]->[Multithreaded Rendering]という項目があるので、チェックを外してやる。
#最後に
こちらの原因に行き着くのに半日近く掛かってしまいました。
Unityを使い慣れていないというのもありますが、理屈を考えて調査するのは大事だなと思いました。