Meta Questで60fpsの動画を再生した場合について
もともと大抵のGoやQuest用メディアプレイヤー系アプリでは秒間50枚程度の映像しか表示することができません。
私が知る限り、初期から完全な形で動画の再生ができていた(リフレッシュレートを60Hzにして、60fpsの動画を再生して1秒間に60枚映像を表示することができる)のはOculus Go版のOculus galleryだけです。
アプリ | 機種 | 備考 |
Oculus gallery | Go | 60Hz 60fps可 |
Oculus gallery | Quest | 72Hz 60fps (恐らく60Hz非対応) |
SkyBox | Quest | 50fps程度になってしまう 2020年10月あたりに60Hz 60fpsへ対応 |
AmaRecVR | Quest | 50fps程度になってしまう 2021年6月に60Hz 60fpsへ対応 |
Oculus Quest1発売当時 (2019年6月あたり)のQuest版Oculus galleryはおそらくリフレッシュレートが60Hzにできていないため、完全に滑らかな60fpsの再生とはなっていませんでした。
その後、おそらくQuest2が発売された2020年10月あたりにSkyBoxが60Hz、60fpsの再生に対応し、更に遅れた2021年6月にアマレコVR2が60Hz、60fpsに対応しました。
■ 50fps程度になってしまう原因
Oculus GoやQuestはスマホ用のOSであるAndroidがベースとなって開発されています。
また、動画を再生する際もAndroidの動画再生機能(現在はExoPlayerが主流)を使うのが一般的と思われます。
十分な性能のスマホを所有していないので未確認ではありますが、スマホであれば ExoPlayerとSurfaceViewを使って動画を再生することにより 簡単に良い結果が得られるものと思われます。
スマホではSurfaceViewにより上手くディスプレイ装置の動作に合わせたタイミング調整が行われると思われる
しかし、GoやQuestでは画面を表示する仕組みがAndroid用のスマホと異なり SurfaceViewが使えません。
そのため自動的に上手くやってもらえず、大抵の場合 動画再生機能の動作タイミングとディスプレイ装置のタイミングが合わず 表示されないフレームが発生してしまいます。
QuestではSurfaceViewが使えず 1リフレッシュ期間に2フレーム表示しようとしてしまうことがある
Oculus GoやQuestにおいて60Hz 60fpsで完全な再生をするには SurfaceViewに代わって アプリ側にタイミング調整の仕組みが必要となりますが、有名なassetのAVPro Ver1.11.5やOculus Integrationに含まれるプレイヤーアプリのサンプルではディスプレイ装置に合わせたタイミング調整が実装されていないため50fps程度の表示となってしまいます。
Android用のアプリ開発においてAVProはとても有力なassetと思われますので、Oculus GoやQuest用アプリでも多く使われていると思われます。
60fpsサンプル動画
30fpsサンプル動画
これを60Hz で再生すれば見た目で簡単に評価できると思います。
■ 60Hz 60fps以外にも
・60Hzで30fpsの動画を再生した際に きっちり2フレームずつ表示できるか
・72Hzで60fpsの動画を再生した際に 5フレーム表示した後 1フレーム休む と言った均等なフレーム割り当てができるか
・90Hzで60fpsの動画を150%で再生 早回しでもきれいに再生できるか
・60Hzで90fpsの動画を67%で再生 スロー再生でもきれいに再生できるか
・必ずタイミングはずれてくるので 10~20秒くらいに一度 意図的にフレームを飛ばしたり 重複させる処理が適切に行えているか
と言った評価ポイントがあります。
■ アマレコVRの最大fps
90Hz 90fpsまでは可能ですが、動画再生機能の上限が今のところ100fps弱なので120Hz 120fpsの再生はできません。
120Hz 60fpsでの再生は可能ですが 動いているものがぶれて見える(60Hzで 30fpsの動画を再生した場合と同じ印象)ため 60Hz 60fpsで再生した方が 見やすいです。