Open8

動画配信システムを作ってみる

shellingfordshellingford

参考文献

https://it-trend.jp/video_system/article/137-0003

動画配信方法

・ストリーミング配信
 ・ライブ配信:生放送
 ・オンデマンド配信:録画した動画を配信
・ダウンロード配信
・プログレッシブダウンロード配信

ストリーミングサーバー

ストリーミングサーバとは、動画ファイルをダウンロードしながら同時に再生するストリーミング配信で利用されるサーバ。動画ファイルをパケット単位で細分化し、端末のメモリに蓄積して動画を再生。視聴後はメモリからパケットは削除されるので、端末に動画は残りません。

・データを受信しながら再生できる
・最適なデータ速度で通信でき、データ通信に無駄が生じにくい
・ファイル保存は不可、PCのキャッシュに残らない

Webサーバ

プログレッシブ配信にはWebサーバが用いられ、動画ファイルをダウンロードして端末に保存しながら動画を再生します。端末に動画が残る。

・データの受信が完了してから、再生・早送り・巻き戻しが可能
・最適なデータ速度を選べない
・ファイル保存ができ、PCのキャッシュにも残る
・同時接続数が多いと、配信不可になることもある

shellingfordshellingford

参考文献

https://aws.amazon.com/jp/cdp/cdn/
https://aws.amazon.com/jp/builders-flash/202202/video-on-demand-on-aws/?awsf.filter-name=*all
https://aws.amazon.com/jp/cdp/cdn-live/

オンデマンド配信構成例

AWS Elemental MediaConvert で MP4 等の形式の動画データから HTTP Live Streaiming (HLS)形式へトランスコードしたファイルを Amazon S3 に格納し、コンテンツデリバリーネットワークである Amazon CloudFront を利用することで安定的なオンデマンド配信が実現。

ライブ配信構成例

5Mbps の映像を 2 時間ライブ配信し、5,000 人が視聴する環境を考慮しています。エンコーダーから送られる映像/音声信号を AWS Elemental MediaLive にて HTTP Live Streaming (HLS) 形式に変換し AWS Elemental MediaPackage へと出力し、AWS Elemental MediaPackage がオリジンサーバーとして機能。

shellingfordshellingford

参考文献

  • AWS Black Belt Online Seminar 「AWS Media Services で始めるライブ動画配信」

配信方式


  1. GET Manifest file
  2. GET Media Segment
  3. GET Manifiest file (Polling)
    ライブ中に定期的に更新されるため、プレイヤーは追加された Media Segment を順次取得する

  4. 配信元からは持続接続型で軽量な RTMP や UDP ベースの RIST などで動画を送る
  5. サーバーサイドでリアルタイムで HLS / MPEG-DASH 形式にトランスコードして配信される

マルチビットレート

ライブ動画配信の課題

フォーワードバッファレイテンシというプレイヤーのバッファーが原因。品質を担保できる。バッファサイズが増やせば増やすほど、ユーザが再バッファリングする回数が少なくなるが、遅延が犠牲になる。
遅延を最小化するには, Media Segment のサイズを小さくする & バッファリングする数を少なくする。
一方、必要なキーフレームは増え帯域も圧迫する & リクエスト数も増えるためHTTPリクエスト/レスポンスのオーバーヘッドものってくる。

MPEG-2 TS エンコーディング中にさらに小さなフラグメントを送る方式。
Media Segment ファイル(ts) = メタデータ + メディアデータ(コンテナ)をいくつかにバッファリングさせてクライアントに送るのが一般的。
1 Segment を書き終わるまでに Chunk というさらに小さな単位で出力する。ファイルは完全ではないが、できたものを即時に送信可能になった。

ユースケース

シンプルな HLS ライブ配信

HLS & MPEG-DASH ライブ配信 / DRM

ライブ配信をアーカイブ

ライブ配信中に巻き戻し(DVR)

MediaPackage のエンドポイントに開始/終了時刻をパラメータに含めることで指定した時間範囲を含むマニフェストファイルを取得。

File/Live をスケジュール配信

同時配信数が増減

配信数が可変の場合、あらかじめライブチャンネルを多めにプールして、stop/start でチャンネル管理してコスト最適化する。

超低遅延配信

AWS Elemental MediaLive

MediaStore や MediaPackage もオリジンストレージとして使用できるが、アーカイブ動画であれば低価格で済む S3 がおすすめ。(Manifest ファイルの更新も行われないため)

Input ソースとして S3 上のファイルを指定できるようになり、時間指定で Input をスイッチングできる。

AWS Elemental MediaStore

S3 は結果整合性モデルを採用してるため、ライブ放送のように高頻度で Manifest ファイルが更新される場合には動画止まってしまう。

Amazon CloudFront

ライブ配信ではキャッシュヒット率が悪いのではないか?

AWS Elemental MediaConnect


打ち上げ時のパケロス、再送処理による遅延の対策で検討

AWS Elemental MediaPackage

マルチプラットフォームに対応したり、DRMによりコンテンツ保護をかけたり、タイムシフトや巻き戻しなど高度な機能が使える。

shellingfordshellingford

参考文献

  • AWS Online Summit 2020 「AWS Elemental Media Services を活用したライブ動画配信のアーキテクチャパターン」

AWS Elemental MediaService

ユースケース

高い信頼性伝送

移動先でも安定打ち上げ

ロケ地や外のステージ上でライブ配信したい場合のライブエンコーダーとして、AWS Elemental Link を使用。

shellingfordshellingford

参考文献

  • InterBee 2021 AWS Media Services を活用した動画配信

VOD 配信

4K解像度や広いレンジで明るさを表現できるハイダナミックレンジなどの高画質なコンテンツ。
マルチデバイスによる複数のビットレートで配信。(アダプティブビットレート)

MediaConvert


映像が複雑なところではビットレートを高く、動きが少ないシーンではビットレートを小さくできる。
容量を最適化できるため、コストや伝送速度に好影響。

Amazon IVS

超低遅延配信 & 簡単にセットアップ可能

動画の任意のチャンクにメタデータを付与することができる。
クイズのポップを表示するなど

shellingfordshellingford

参考文献

  • AWS Online Summit 2022 「AWS 上で実装するライブ動画配信のアーキテクチャパターン」