Open4

ライブ配信のアプリケーションを組んでみるためのメモ

hassaku63hassaku63

予習知識

まずライブ配信がどうやって実現されているか

AWSJ の資料「クラウドネイティブサービスで実現するライブ動画配信」が参考になるのでこちらから知識を得る

https://pages.awscloud.com/rs/112-TZM-766/images/20190828_AWS-LiveVideoStreaming.pdf

普通にコンテンツダウンロードするだけの形式ではだめで、Streaming 対応なプロトコルで会話しないといけない。

HTTP Streaming をいうものを使えばデバイスの標準的なプレイヤーやプラグインで再生できるとのことで、ユーザー普段がない。普通の web 世界のキャッシュも利用できるので、CDN で配信することも可。たぶん HTTP Stream というのは何で通信するかという手段であって、データがどのようなフォーマットをしているかはまた別問題。HLS とか MPEG-DASH とかそういったフォーマットの違いがあり、プラットフォームによってサポート状況も異なる

※ ありもののコンテンツを動画再生するだけならば HTML5 の video タグを使えばよいし、通常の web サーバーがあれば対応可能。ライブ配信するなら HTTP Streaming などのテクノロジーを採用する必要がある

HLS や MPEG-DASH は OS がネイティブサポートしている場合が多いため、これらをベースにストリーミングの標準化が図られている最中

hassaku63hassaku63

ビットレートの調整 (Adaptive bitrate

複数のビットレートを用意しておき、回線状況に応じてビットレートを再生途中でも変更できるようにする

配信の構成

資料 p.18 - 19 より

インターネット経由で配信する場合に、通信品質をどうやって担保するかは課題。以下のキーワードが挙がっている

  • TCP / UDP
  • FEC, ARQ (前方誤り訂正, 自動再送要求)
  • RTMP, RP+FEC, SRT, Zixi, RIST

  1. 収録環境から映像と音声を出力し、エンコーダに転送
  2. エンコーダによって特定のフォーマットに変換して Origin に転送
  3. Live Encoder (とは?) によって、HTTP Streaming のような配信方法を使って配信。フォーマット=マルチメディアコンテナは HLS や MPEG-DASH を利用(必要があれば CDN を噛ませることも可能)

"Live Encoder" という単語が出た。通常の Encoder とは異なる概念であるらしい

hassaku63hassaku63

AWS では

Elemental シリーズというのが色々配信関係のプロダクトとして出ているらしい。

正直こんなに Elemental シリーズが多いとは知らなかったのでびっくりしている。

BlackBelt に Media Services の説明があったのでこれを引用。

| Service | description |
| :--- | :--- | :--- |
| MediaConnect | ライブストリーミングを伝送する |
| MediaConvert | マルチフォーマット・コーデックをサポートするトランスコーディングを行う |
| MediaLive | ライブ配信用のエンコーディングを行う |
| MediaPackage | Just-In-Time Package のサービス、DRM (Digital Rigths Management) やタイムシフト再生を提供する(ライブ配信のワークロードには不要) |
| MedhiaStore | ライブ配信用のストレージサービス |
| MediaTailor | サーバーサイドで最適化された広告挿入を可能にする |

いろいろなユースケースに対応した(Media Services を活用した)ハンズオン集が公開されているので、これを使うことでそれぞれのユースケースを理解できそう

https://aws-mediaservices-jp.workshop.aws/introduction.html