Posted:
| Categories:
AWS
| Tags:
Cloudfront,
LiveShell,
MediaLive,
MediaStore
ライブ配信システムの構成
映像データは下記のように流れる。
カメラ、マイク -> ローランドの映像ミキサー -> LiveShell X -> MediaLive -> MediaStore -> CloudFront -> 各プラットフォームのプレーヤー
この手順では、MediaLive、MediaStore、CloudFrontの設定について行う。
このうち、MediaLiveには
- インプット( LiveShell X からの RTMP を受け取る )
- チャンネル( 映像データをエンコードする )
で構成されている。
またMediaStoreはストレージで、MediaLiveでエンコードされたデータを保存する領域になっている( MediaLive だけでは映像を保存できない、かならず別の保存する領域に転送する必要がある )
CloudFrontは大規模配信で使われるCDNで、
複数ユーザにキャッシュを見せる事で、MediaStoreの負荷を下げるために用いている。つまりCloudFront無しでも配信は可能だが、CloudFront無しだとライブ授業のユーザー数には耐えられないため、導入しておいた方がよい。
MediaStoreは「MediaLiveでエンコードされた映像のチャンクを置く場所」として必要( MediaLiveにはストレージが無いので、別途つくる必要がある )
MediaLiveを作る際にMediaStoreのアドレスを指定する必要があるので、事前に作成する。
チャンネルを作成する
MediaLiveで映像データをエンコードするチャンネルを作成する
管理画面 からログイン
設定例
入力名: dev
入力タイプ: RTMP (プッシュ)
Network mode: Public
入力セキュリティグループ: 既存の使用、0.0.0.0/0
入力の送信先: SINGLE_PIPELINE
[チャンネルの作成] をクリック
( その環境にMediaLive用のロールが無ければ作る必要があるので )テンプレートからロールを作成する
チャンネルテンプレートは[ Live Action ]をベースに作成する事にした。
( このテンプレートの内容は時代によって変わるようだ。以前よりテンプレートも増えているし内容も異なる )
[ Channel class ] は [ SINGLE PIPELINE ]を選択する。 標準では[ STANDARD ]になっているが、正しく冗長化を試みるとなると、インターネット回線を2つ用意するような話になるので、シンプルに[ SINGLE PIPELINE ]で設定する。
Read more...Posted:
| Categories:
AWS
| Tags:
MediaLive,
MediaStore
AWSメディアサービスで 動画配信のパラメータを変更して検証するの… 超面倒。
そもそも、都度チャンネル作らなきゃならない設定はなんなの。辛み。
CLIから作りたくなってきた。aws-cliをアップデートするとメディアサービスも使えるようになります!
最初に aws-cliをアップデートする
チャンネルidを取得する
先にチャンネルのIDを確認します。WebUIだと
[ MediaLive ]->[ Channels ]->作成したチャンネルのラジオボタンをクリック->[ ID ]の所の数字をメモ
aws medialive describe-channel --region ap-southeast-1 --channel-id チャンネルid > channel_sample.json
CLIからだと
aws medialive list-channels --region ap-southeast-1
で取得できます
チャンネル設定を変更する
上記の describe-channel はユニークであるべきidやチャンネルごとに振られるIPアドレス、ステータスなども出力されてしまいますので削除します。
- PipelinesRunningCount
- EgressEndpoints
- State
- Id
- Arn
既にある設定を削除する
注) 下記を実行すると、既にあるチャンネル設定が一つ消えます。高速に検証するため、チャンネル設定を消して作ってを行っていますが、サービスするようになったら変更する必要があるでしょう。
上記のチャンネルidを取得する方法を利用して、既存のチャンネル設定を削除しています。
aws medialive delete-channel --region ap-southeast-1 --channel-id $(aws medialive list-channels --region ap-southeast-1 | jq -r '.Channels[].Id')
jsonからチャンネルを作る
aws medialive create-channel --region ap-southeast-1 --cli-input-json file://channel_sample.json
チャンネルをスタートする
aws medialive start-channel --region ap-southeast-1 --channel-id $(aws medialive list-channels --region ap-southeast-1 | jq -r '.Channels[].Id')
チャンネルをストップする
aws medialive stop-channel --region ap-southeast-1 --channel-id (aws medialive list-channels --region ap-southeast-1 | jq -r '.Channels[].Id')
Read more...Posted:
| Categories:
AWS
| Tags:
CloudFront,
MediaLive,
MediaStore
2018年初頭 ライブ配信基盤を AdobeMdiaServer から MediaLive によるライブ配信に切り替えました。
2020年以降ですとVimeo Liveが有力候補です。
背景
- 動画配信システムだけで良いのでシンプルに立てたい( カメラの映像を手っ取り早くユーザに届けたい )
- 必要なときだけ配信システムを立てて終了したい。
- 似たような案件ができたときに、似たようなシステムをスピーディーに構築したい
- 現状、EC2 で AdobeMediaServer 立ててライブ配信している
- AdobeMediaServer のバージョンアップ? <- それに伴う検証したいか、というと検証工数を割きづらい…
- その点、AWS 上のサービスなら、後から機能追加があったりする。
- 今回は使っていませんが、CMAF 対応が追加された。機能追加の検証をクラウドベンダがやってくれて、我々はその時間をもっと別な事に使える。あるいは早く帰れてハッピー。
- 逆に「我々は配信方法で独自のチャレンジをして差別化を狙うぜ」には向いてない(現状、弊社的にそこでチャレンジはしてない)その観点でのチャレンジは EC2 上で構築した方が様々な戦術がとり得る
- 何か仕様変更に伴う負荷上昇(対応ビットレートの追加とか)に対する検証工数がビジネスに繋がりにくい
- AWS で費用をまとめられる。あとトラフィックが増えた場合、ネットワーク費用のディスカウントができるかもという。
- lambda から配信システムの起動/終了とかできそう
- Azure も魅力的に見える。ただ CLI や API での操作ってどうやるんだろうか、という調査に時間とられそうだった(その点、AWS なら手軽に CLI で操作できるのは知っていった)
システム構成
カメラ -> エンコーダー -> MediaLive -> MediaStore -> CloudFront -> Safari
CDN でコストを下げつつ、ライブ配信したい構成ですね。
それぞれの役割は
MediaLive: RTMP などカメラからの情報を受け付ける。目的の動画フォーマットにエンコードする。ただ、これ自体にはストレージ機能は無い。
MediaStore: CloudFront と経由するためのストレージ
CloudFront: MediaStore に貯められた
それぞれを構築する順序だが、MediaLive の設定で「どこに動画データを貯めるのか」という設定が必要なため、
MediaStore の設定から行う
Read more...