Mobile VR Media Overview テキトー訳

原文 https://developer3.oculus.com/documentation/mobilesdk/latest/concepts/mobile-media-overview/

パノラマや動画等全てのメディアは可能な限り最高の解像度と画質でオーサリングしてください。そうすれば将来的に異なる解像度にリサンプルすることができます。

このトピックは多くの注意事項とトレードオフが伴います。

## パノラマ静止画

**4096x2048 equirectangularパノラマ**はゲームと360度写真どちらにも使えます。キューブマップを使う場合、**ゲームには1024x1024、360度写真には1536x1536の大きさ**にするのが良いでしょう。

## パノラマ動画

Qualcomm H.264 ビデオデコーダーは 4k 映像を 30 FPSで処理できます(若干のヘッドルームがあります)。ピクセルレートは解像度とフレームレートとの間で調整が可能です。**3840x1920 の映像を30FPS**で処理することもできるし、**2048x2048 の映像を60FPS**で処理することもできます。

Androidソフトウェアレイヤーはビデオのデコードに縦方向2048ピクセルの制限があります。なので**4096x4096の映像を15FPSで処理することはできません。**圧縮時のビットレートはデコーディングレートには関係しません。パノラマ動画は60 Mb/sであっても問題なくデコードできます。しかしほとんどのシーンでは**20 Mb/s**程度で十分でしょう。

安全なパノラマ動画のフォーマットは2880x1440 60 FPSか、立体視用には2048x2048 60 FPSです。もしカメラが静止しているなら、3840x1920 30 FPSの動画でもいいでしょう。

Oculus 360 Video は equirectangular 動画を表示できます。Top-bottom, bottom-top, left-right, right-left のいずれかの立体視動画も以下の規則に従ってファイル名を付けることで再生できます。

ファイル名の末尾 | 左目用の映像 | 右目用の映像
--- | --- | ---
_TB.mp4 | 上 | 下
_BT.mp4 | 下 | 上
_LR.mp4 | 左 | 右
_RL.mp4 | 右 | 左

ファイル名の末尾が上記以外の場合は、動画の幅と高さが同じであればTop-bottomの立体視用動画として扱い、そうでなければ通常の(立体視ではない)動画として扱います。

## スクリーン上での動画

映画館のようなスクリーンで動画を表示する際には、水平の視野角が70度以下になるようにすると快適な大きさになります。この大きさであればそんなに頭を動かさなくても画面全体を観ることができます。VR空間の中で動画を再生する場合は、片目分のレンダリングバッファサイズが1024x1024であるため720x480程度以上の大きさにしても意味がないばかりか、mipmapを作成しないとエイリアスによって画質が悪く見えてしまいます。

TimeWarpを使用して動作しているOculus Cinemaを1440解像度のデバイスで表示すると、**1280x720** HD解像度がちょうどよいです。最適なサイズは座る位置により変わりますが、大抵は720Pで満足できるでしょう。通常のWeb用動画よりも高いビットレートの方が良いです。最適なビットレートはコンテンツにより異なりますが、**5 Mb/s**程度で大抵の動画は良い結果が得られるでしょう。

1080P動画を再生することも可能ですが、必要以上の解像度があっても仕方ない上に電池の消費も増やしてしまします。

3D動画はフルサイドバイサイドで1:1ピクセルアスペクト比でエンコードされるべきです。1920x1080の圧縮サイドバイサイド3Dは1920x540のフルサイドバイサイドの解像度にリサンプルされるべきです。

## 動画メタデータ

Oculus Cinemaは動画を読み込む時にメタデータを探します。メタデータはUTF-8テキストファイルで、動画と同じファイル名で、拡張子が`.txt`になっているものです。メタデータはタイトル、フォーマット(2D/3D)、カテゴリーを指定します。

```json
{
  "title":    "Introducing Henry",
  "format":   "2D",
  "category": "trailers",
  "theater":  ""
}
```

`title`は動画の名前です。Oculus Cinemaはファイル名の代わりにこの値を表示します。

`format`は映像のフォーマットを指定します。空欄のままにしておくとデフォルトの2Dとして扱います(`3D`というパス名を含んでいない限り)。フォーマットは次のいずれかの値を指定します。

値 | 説明
--- | ---
2D | フルスクリーン2D動画
3D または 3DLR | 左目用が左、右目用が右に配置された3D動画
3DLRF | 左目用が左、右目用が右に配置されたフルスクリーン3D動画 (3DLRでは小さすぎる場合に使用)
3DTB | 左目用が上、右目用が下に配置された3D動画
3DTBF | 左目用が上、右目用が下に配置されたフルスクリーン3D動画 (3DTBでは小さすぎる場合に使用)

`category`は次のいずれかの値を指定します。

値 | 説明
--- | ---
空欄 | "My Videos" タブに表示されます
Trailers | "Trailers" タブに表示されます
Multiscreen | "Multiscreen" タブに表示されます

## Oculus 360 Photos と Videos メタデータ

Oculus 360 Photos のストアからダウンロードできるバージョンはAPKの中にメディアの情報をパッケージしています。これによりメディアを変更することなく動的にカテゴリーを作成したり編集したりできるようになります。SDK 360 Photosでは`Oculus/360Photos`内にあるコンテンツからメタファイルが自動的に生成されます。

メタデータは次のような構造になっており、`meta.json`という名前でassetsフォルダから読み込まれます。

```json
{
  "Categories": [
    {
      "name": "Category1"
    },
    {
      "name": "Category2"
    }
  ],
  "Data": [
    {
      "title": "Media title",
      "author": "Media author",
      "url": "relative/path/to/media",
      "tags": [
        {
          "category": "Category2"
        }
      ]
    },
    {
      "title": "Media title 2",
      "author": "Media author 2",
      "url": "relative/path/to/media2",
      "tags": [
        {
          "category": "Category"
        },
        {
          "category": "Category2"
        }
      ]
    }
  ]
}
```

ストアバージョンとSDKバージョンの360 Videosは両方共メタデータを使用しません。カテゴリーは`Oculus/360Videos`以下のフォルダから生成されます。


## メディアの場所

SDKには静止画・動画を再生する三つのアプリケーションが含まれていてます。Oculus Cinemaは通常の2D・3D動画を再生します。Oculus 360 Photosは360度静止画を、Oculus 360 Videosは360度動画を再生します。これらのアプリケーションは端末内のストレージからメディアファイルを探します。Oculus 360 Photosはメタデータを使用して動的にタグ付けをします。メタデータは永続的なキャッシュに保存されます。これは"Favorite"機能が動作する仕組みです。メディアストレージには一切の変更を加える必要がありません。次のテーブルは三つのアプリケーション用のデータをどこに格納すればよいかを示します。

メディア | フォルダー | アプリケーション
--- | --- | ---
2D動画 | `Movies\`<br>`DCIM\`<br>`Oculus\Movies\My Videos` | Oculus Cinema
3D動画 | `Movies\3D`<br>`DCIM\3D`<br>`Oculus\Movies\My Videos\3D` | Oculus Cinema
360度パノラマ静止画 | `Oculus\360Photos`<br>(In the app - assets\meta.json) | Oculus 360 Photos
360度パノラマ動画 | `Oculus\360Videos` | Oculus 360 Videos
シアター3Dデータ .ovrscene | `Oculus\Cinema\Theaters` | Oculus Cinema