VR動画ライブ配信を支える技術
はじめに
ブログ初投稿となります。軽く自己紹介から。
VRizeという会社で働いております露木と申します。
弊社ではVR広告とVR向け動画のコンテンツ管理システムを提供しています。
目的について
VR動画コンテンツ管理システムを開発する中で、ライブ配信領域のまとまった情報が少ないと感じたため、全体像をまとめていきたいと思います。
タイトルはVRとなっておりますが、VRではなくとも動画配信システムの根幹は変わりません。同システムに関わる人向けにざっくりとした全体感を抑えることを主眼としてまとめます。
そのため出来る限り技術的な詳細には踏み入らないようにします。
進行について
ライブ配信の際、動画撮影から配信、再生するまでに通るフェーズを個別に見ていきます。
フェーズはそれぞれカメラ、エンコーダー、トランスコーダー、CDN、ストレージ、プレイヤーからなります。
これらを紹介した上でその他のトピックを抑える形で進んでいきます。
カメラについて
一番最初のフェーズで動画を撮影してオリジナルの動画データを生成する層です。
ここで生成される動画データは、ネットワークを通してやりとりしやすいように後述のエンコーダーの層で圧縮したりフォーマットを整えたりする必要があります。
代表例 (VR,360系のみ選出)
- theta S
- Insta360 nano
- GoPro Omni
- Nokia OZO
- gear 360
エンコーダーについて
カメラから受け取った動画を受け渡したり再生したりしやすい形式に変換する役割を果たします。
動画のコンテナ(※1)やcodec(※2)などはこの層で整えておきます。
ライブ配信の際は一般的に、トランスコーダーの層(後述)でRTMP形式のURLを発行し、エンコーダーに同URLを設定して配信を開始する方法を取ります。
代表例
- XSplit
- OBS
- Wirecast
- Flash Media Live Encoder
トランスコーダーについて
オリジナルの動画を元にして動画に加工や変換したりする役割を果たします。
例えば以下のような加工や変換を行うことが出来ます。(※3)
- 配信形式をHLSにする。MPEG-DASHにする。
- codecをh.264にしたりh.264の設定を変更する。
- 解像度を変更する。
- 字幕をつける。
- 動画クリップを作成する。
- コンテンツ保護のためDRMをかける。
- ここまでの設定を変えた動画ファイルをそれぞれ別の出力にする。
- 出力にストレージ(後述)を設定する。
代表例
- AWS Elastic Transcoder
- Wowza
- Azure Media Services
ストレージについて
ストレージはファイルを保存しておくことが出来る層です。ライブ配信をする場合ライブ配信中に生成されていく動画ファイルを保存しておき、配信出来るようにします。
この層は動画以外でも画像やテキストファイルなど静的なファイルを保持しておくのにもよく使われます。
HLS形式でライブ配信をする場合、ライブ配信中に小さい動画ファイル、tsファイル、がどんどん生成されていきます。
トランスコーダーの層で出力にストレージを選択していると、ライブ配信中、ストレージにtsファイルがどんどこ溜まっていく過程を見ることが出来ます。
代表例
- AWS S3
- Google CloudStorage
CDNについて
CDNはContent Delivery Networkの略で、動画配信の場合動画ファイルを効率的に配布するための仕組みを指します。
ここで言う効率的と言うのは、サーバーが世界中に散らばって配置され、動画ファイルをリクエストした場所から地理的に一番近いサーバーが選択され配信するなどの機構により、素早くファイルをやりとりすることが出来たりします。
代表例
- Akamai
- AWS CloudFront
- GCP Cloud CDN
プレイヤーについて
実際に動画を再生するソフトウェアのことです。
動画ファイルの形式は権利関係で守られていることが多く、OSやブラウザなどによって再生出来たり出来なかったりします。
これはcodecにも同じことが言えます。例えばH265/HEVCなど新しいcodecは対応していないプレイヤーがほとんどです。
代表例
- Android Media Player, Exo Player
- iOS AVKit
- Windows Media Player
- ブラウザのプレイヤー
その他
DRM
DRMとはDigital Rights Management の略で、コンテンツの著作権保護などを行います。
簡単に言うとコンテンツに鍵をかけ、鍵がなければ再生出来ないようにします。
大体トランスコーダーの層でDRMをかけることが多いです。
DRMはオープンな規格だとAES, 商用だとPlayReadyなどが挙げられます。
ちなみに商用のものは高いです…
コンテンツへのコピー保護を目的とするものとアクセス制御(Aさんは再生出来るがBさんは再生出来ないなど)を目的とするものに大別されます。
UHDとh.265
UHDはUltra High Definitionの略で、現行のHD放送、1080i(2K)に比べ映像・動画の解像度が高い規格です。4Kと8Kの2つがあり、日本ではChannel 4Kが「4K試験放送」として放送中です。
UHDを動画配信で使用する場合、動画ファイルをより効率的に配布するために次世代のcodecであるh.265/HEVCの普及が待たれます。
h.265/HEVCの規格はMPEG LAという組織がライセンスを管理しています。使用する場合ライセンス料を支払わなければいけないため、一般のアプリケーションで手軽に使用出来るようになるまのは少なくとも1,2年は待たなければいけないという肌感です。
HLSと字幕について
HLSはtimed metadataという再生時間にしたがってデータを管理する仕組みを提供しています。これを使用した仕組みとして代表的なものに字幕が挙げられます。
字幕以外にも同仕組みを使えば動画の再生時間に応じてデータを管理することが出来、アイデア次第では動画に様々な機能を埋め込むことが出来ます。
おわりに
今回は動画のライブ配信をする際に、撮影から配信、動画再生までにたどるフェーズ一つ一つを見ていきました。
カメラによって撮影された動画はエンコーダーに渡され、受け渡し・再生し易い形式に加工されます。エンコーダーとトランスコーダーはRTMPによってファイルを受け渡し、トランスコーダーは動画に様々な加工や変換を加えます。こうして出来た動画はストレージに溜まっていき、CDNを通じてプレイヤーに配信され、再生されます。
VRを使えばテレビやディスプレイがなくても高解像度で映画館並みのスクリーンの大きさ(もしくはそれ以上に大きい!)で動画を視聴出来る環境になってくるかなと感じています。
この際、高解像度(2K, UHD)での動画再生が上質なユーザー体験の肝になってくるなと感じます。
ただ、サイズの大きい動画をネットワーク越しに取得するため、さくさく見るためには次世代codecの普及が鍵になってくるかなと感じてます。
私自身VRでの動画視聴を経験してみて非常に気に入っています。個人的にはスポーツ中継をVR HMDを通して大画面で見たいです。
VRでの動画視聴体験をより多くの人に体験してもらえるようVRize CMSの普及に邁進したいと思います。
(※1) …. 映像や音声データを1つのファイルにする規格のこと。例としてMP4など
(※2) …. 映像や音声の圧縮プログラム、またはその技術。例としてH.264など
(※3) …. 使用するサービスやソフトウェアによっては提供していないものもあります。