360度(全天球)ライブ配信ってどうやったらできるのかという話題があったので、知っていることをちょっと整理してみました。
カメラからヘッドマウントディスプレイまでの流れ
(1) 複数のレンズからの映像の入力
(2) 映像をひとつに合成する
(3) 送信
(4) 受信
(5) 見たいところを切り出して表示
複数のレンズからの映像の入力
360度の全天球の映像はひとつのレンズでは捉えることができないので、映像ソースは必ず複数になります。前後の2つの魚眼レンズを使う場合には、これは円形の映像が2つになります。
映像をひとつに合成する
複数の映像をひとつに合成します。このときにはequirectangular(エクイレクタングラー)というフォーマットを使うのが一般的です。
私の大雑把な理解では、球面の映像を円筒形に投射して、その円筒形を切り開いて長方形にしたものです。アスペクト比は2:1 になります。
送信と受信
なんらかの方法で、映像を遠隔地に配信します。遅延時間が短いことを重視するならば、WebRTCが候補になります。片方向で大人数に対して配信したいならば、HLSなどを使います。
equirectangularのアスペクト比は2:1 なので、上下に黒い帯を追加して16:9に変換します。それ以外は普通のライブ配信と変わるところはありません。
見たいところを切り出して表示
ヘッドマウントディスプレイの加速度センサーの情報などから視聴者の見ている方向を特定し、equirectangularの画像から一部を切り出して表示します。
Unityを使うとこのようなビューアーを作ることができるそうです。
課題
思ったより画質がよくない
equirectangular で4Kのサイズで配信したとしても、実際に見るのはそこから切り取った一部だけです。なので感覚的に720pかそれより低いぐらいの感じです。
映像の合成処理が重い
(2) のequirectangularへの合成はけっこう重い画像処理なので、これをリアルタイムに行うには専用のハードウェアが必要です。
廉価の360度カメラではこの機能はついていません。この機能を持っているカメラでも発熱がすごいので長時間の連続配信はできないことがあります。このあたりをクリアした機材は当然高価なものになります。
モバイル回線では厳しい
映像の内容にもよりますが、4K 30fps 20Mbps くらいの通信帯域が必要です。光回線が前提ならばよいですが、屋外から配信したいとなるとLTEのモバイル回線では厳しいです。5Gに期待?
意図しないものも映り込む
これはあえて、ここで言及することではないですが ..
360度全天球動画だと死角がありません。なのでカンペを持っているスタッフさんも映ってしまいます。完全にありのままを映すことになりますね。街中からの配信で、通行人の肖像権とか考えだすとややこしいことがあるかもしれません。