とりあえず最近趣味でやっていた 360 度ライブストリーミングに関する知見のメモを公開しておきます。
映像について
- まず VR という呼称は気にいらない
- VR は 3DCG 空間を自由に動けたり、視差で 3D 感があって初めて VR だと思っているので 360 度動画とは区別されるべき
- 360 度動画は 2D では正距円筒図法にマッピングされることがおおい
- 正距円筒図法 - Wikipedia
- よくある世界地図みたいなやつ
- 実際にはいくつかのレンズを使って撮影するので撮影したデータが正距円筒図法になることは無い
- RICHO の THETA だと 2 つレンズがある
- 実際には 360 度では無いが 280 度くらいの魚眼レンズを 1 つ使うのもある (Entaniya とか)
- カメラから得られたデータを正距円筒図法にマッピングし、 RTMP などで publish するのが一般的
- しかし一旦正距円筒図法にするには画像変換が必要で、ただでさえエンコードをしている送出元でやるのはコストが高い
- 十分に CPU/GPU パワーのある環境ならこの限りではない
- しかし一旦正距円筒図法にするには画像変換が必要で、ただでさえエンコードをしている送出元でやるのはコストが高い
- viewer では正距円筒図法を利用し、 3D 空間で動画を貼り付ける
- これって結局 3D に描画するから前段階でカメラから得た画像を正距円筒図法にする必要はあるのか?!
- viewer で 3D に描画して終われば変換は 1 回で済むので画質の劣化も低い
- これって結局 3D に描画するから前段階でカメラから得た画像を正距円筒図法にする必要はあるのか?!
- 360 度分の動画を 1 つの画像データにして配信すると、 viewer の視野角自体は精々 120 度程度なのに見えない部分のデータもやりとりして通信コストが高い
- 画像を適切に分割して、見えている部分は高画質で受信し、見えてない部分は低画質、または受信しないといったアプローチが必要
- ここについて標準化された仕様は無いので各社手探りにやっている状態
- 動画を分割しすぎても圧縮効率が悪くなったり、プレイヤーの実装コストがあがるし、分割をあまりしないと送受信データに無駄が多いのでバランスをとることが必要
音声について
- 映像が 360 度なのに音がモノラルならまだしもステレオなのはおかしい
- 音声もいくつかで録音し、 3D 空間にマッピングして、左右から聞こえる音のバランスを調整する必要がある
- ここに関しては映像よりも個人的に研究があまり進んでいない
デバイスについて
- RICHO THETA S は 6 時間くらい配信 (室内) すると死ぬ
- 死ぬ瞬間を目撃したことはない (目をはなすと死んでる) ので熱暴走か?
- 冷却ファンを取り付けるといった改造が必要かもしれない
- 360 度動画は大きな配信機材を近くに置けない
- あたりまえだけど死角が無いので、カメラの近くに大きな配信機材を置いたりすると見えてしまう
- カメラの近くに小さい配信環境を作って出来るだけ映らないようにする
- THETA S + RPi2 ... 正距円筒図法できるツールがない、 OpenMAX でも H.264 エンコードがつらい
- THETA S + LattePanda ... 正距円筒図法は RICHO が提供しているソフトで出来る、 QSV で H.264 がつらい、熱でクロックが落ちやすい
- 撮影した MJPEG のデータを高速な無線 (WiFi など) で飛ばすことだけ専念し、エンコードや画像変換はまともな PC でやる必要があるか