見出し画像

visionOSで360度動画を扱う

はじめに

睡眠を促進するApple Vision Pro専用のアプリ「Good Sleeper 360」を開発しました。このアプリでは360度の環境動画をFully Immersiveで表示し、リラックスできる環境音とともに睡眠の質を向上させます。

このアプリで360度の動画を表示する際に注意すべきポイントが見つかったので、それを書いてみます。

360度動画の撮影

360度動画の撮影には、2024年4月に発売されたInsta360 X4を使用しています。このカメラは最大で8K 30fpsの360度動画を撮影することができ、2024年6月現在、民生機としては最高性能を誇っています。

撮影した動画を書き出すにはInsta360 Studioを使います。360度動画を書き出す際にはエンコードフォーマットをH.265にするのがポイントです。何故、H.265が良いのかは後述します。

エンコードフォーマットはH.265で書き出す

Fully Immersiveで動画を表示する方法

360度動画をFully Immersiveで表示するためには、動画をAVPlayerで再生できるようにしてVideoMaterialに渡します。

let url = Bundle.main.url(forResource: "movie", withExtension: "mp4")
let player = AVPlayer(url: url!)
let material = VideoMaterial(avPlayer: player)
player.play()

詳細については、以前登壇した内容をnoteにまとめているので参考にしてください。

動画のエンコードフォーマットの違い

先程のInsta360 Studioで書き出せるエンコードフォーマットにはH.264、H.265、ProRes422の3種類がありますが、H.264とH.265について簡単に比較してみます。

  • 承認年:H.264は2003年、H.265は2013年に承認

  • 圧縮率:H.265はH.264の約2倍の圧縮率を実現

  • ファイルサイズ:H.265は同等の画質でH.264の半分のサイズを実現

  • 帯域幅効率:H.265の方が高く、特に4K動画で効果を発揮

  • 処理負荷:H.265の方が処理負荷が高い

  • エンコード時間:H.265の方が長い時間が必要

  • 互換性:H.264の方が広く普及しており、互換性が高い

  • 適した用途:H.265は4K/8K等の高解像度動画に最適

H.265はH.264の後継規格であり、圧縮率もファイルサイズも優れており、今回の8K動画にも最適です。しかし、H.265はエンコード・デコード共にハードウェアへの負荷が高くVision Proのような限られたハードウェアリソースしか持たないHMDにおいては、H.264のほうが最適だと考えていました。

8K 30fpsの360度動画を再生

次の動画では、8K 30fpsの360度動画をH.264とH.265でVision Proで再生しているものをVision Proの画面収録で撮影しました。実際に見るよりも明度が低いの編集の問題なのでスルーしてください。動画後半のスロー再生を見ると、H.264でエンコードした動画は人が歩いている映像がフレーム落ちしています。特に動きが多い動画の場合にはこれが顕著です。

フレーム落ちしている理由としては、Vision ProのM2チップには専用のメディアエンジンが搭載されていて、H.264、H.265のハードウェアアクセラレーテッドデコードに対応しています。そして、M2チップのH.265デコード性能は、H.264よりも高いと言われています。そのため、Vision Proで動画を再生する場合にはエンコードフォーマットはH.265を選択することをオススメします。

動画のビットレートを下げたり、解像度を落とせばH.264でもスムーズに再生できるかもしれません。ただし、8K 30fpsのFully Immersiveの動画をVision Proで再生した感想としては、まだまだ映像に粗さが目立ちます。360度の動画で解像度感が気にならないレベルにするには、14K以上の解像度が必要です。

まとめ

Vision Proはまだまだ発展途上で、今後Apple Siliconのチップ性能が上がってくれば、もっと高解像度の動画を気軽に再生できるようになるかもしれません。
また、Insta360 Titanという業務用の360度カメラなら11Kでの撮影が可能ですが、200万円以上と高価です。この様なプロ用の機材が民生機まで降りてくれば現実に近い360度映像を気軽に撮れるようになるかもしれません。


この記事が気に入ったらサポートをしてみませんか?