概要
Unityで360度動画を再生するとき,4Kの解像度を境界に動画コンテナに工夫が必要でした。
360度動画をUnity上で再生するための操作は,公式ドキュメントに手順が掲載されていますが,Unityにインポートするまでの工夫や,そうならざるを得ない背景事情を取り扱います。
環境
ソフトウェア
- Windows 10
- Unity 2019.4.x
- SteamVR
- HTC Vive
ハードウェア
- Intel Core i7 10700
- NVIDIA RTX 2070 Super
- DDR4-2133 32GB
カメラ
- Insta360 Pro 2
背景
一般的にUnityに動画をインポートする際には,H.264 (typically in a .mp4, .m4v, or .mov format)を選択するが一般的です。
しかし,H.264形式は4K30p(4,096×2,048)までが標準仕様で,それを超える解像度(例. H.264形式の8K動画)をUnityで扱う際には,iGPU(CPU内蔵グラフィックス)やdGPU(グラフィックボード)のデコード支援が利用できませんでした。
その結果,デコード処理がCPUで行われるため,動画の再生がカクカクになります。
H.264の次世代規格であるH.265は,8K120p(8192×4320)まで標準仕様です。UnityでもUnity 2019.1からH.265をサポートしています。
Unityにインポートするまでの準備
- H.265形式で動画をエンコード
- HEVC ビデオ拡張機能の導入(120円)
1. H.265形式で動画をエンコード
お好みのエンコーダーで,動画をH.265形式でエンコードします。筆者の環境では以下の設定で運用しています。H.265形式のCPUエンコードは非常に時間がかかるため,Intel QSVやNVIDIA NVENCやAMD VCEによるハードウェアエンコードをおすすめします。
エンコードについては,私はいつもこちらの方のブログを参考にしています。
形式 | 2D, 3D | プロファイル | 生成動画のビットレート(参考程度) |
---|---|---|---|
8K30p(7680x3840) | 単眼視 | Main@L6.1@High | 約150Mbps |
8K30p(7680x7680) | 両眼立体視 | Main@L6.2@High | 約300Mbps |
2. HEVC ビデオ拡張機能の導入
現在VRヘッドマウントディスプレイを扱うには,Windows一択のため,Windowsで動かしている方が大半だと思います。
Unityは,Unity 2019.1からH.265をサポートしましたが,Windows上でのUnity
では,動画のインポートと再生にHEVC ビデオ拡張機能を導入する必要があります。
これは,UnityがMicrosoft Media Foundationを利用しているためです。
この拡張機能は実質有償化しましたが,OSレベルでH.265デコード機能が扱えるようになり,UnityでH.265が扱えるほか,エクスプローラのサムネイルでの表示やプレビューに対応するようになります。120円です。将来的にOS標準サポートになるといいですね。
こぼれ話:カメラRAWやAV1の拡張機能は無償提供されています。
Unityにインポートしてからの手順
公式ドキュメントに手順が掲載されています。2Dも3Dもどんとこい。