OBSとAWSでライブ配信をする①
C-wordウイルスの影響で、ライブ配信の需要が高まってきました。僕の職場でも、そんなの本業じゃないんですが、よくライブ配信の依頼が来ます。面倒なので、AWSを使ったライブ方法を公開しておくことで、ライブ配信の仕事が減るといいな〜と思って掲載します。
想定読者は、競合他社のみなさんです。
この記事のゴールとしては、「一旦なんか配信できたっぽい」ということろを目指します。一旦できてしまえばあとから細かいカスタマイズを覚えやすくなるでしょう。
使うものは OBS と AWS です。AWSの中でも、マネージドな配信サービスである、AWS Elemental MediaLive と その動画配信ファイルストレージである、 AWS Elemental MediaStore を利用します。
MediaLive は、映像ソースを受け取って加工したりしてどっかに流す役割をします。
MediaStore は、映像ファイルを保存します。
一般的なライブ配信では、ライブといってもなにかwebsocketのようなもので毎フレームUDPで受け取っているのではなくて、細切れになった動画ファイルとその目次ファイルをちょこちょこgetしているだけです。なので映像ファイルの保存先が要ります。
ちなみに、それって S3 じゃダメなの?というお声があるかもしれませんが、 S3 でもいいです。
https://dev.classmethod.jp/articles/aws-elemental-mediastore-mediastore-immediate-consistency/
ここを参照していただくと、 MediaStore と S3 の違いが書いてありますが、要はリアルタイムちゃんとファイルが更新される保証があるのが MediaStore で、 S3 は若干そのへんゆるいですよ、ということみたいです。
ではさっそくやっていき。
まずは入力エンドポイントから作っていきます。rtmp://xx.xx.xx.xx/xxxxx っていうアレとストリームキーを得ます。
AWS コンソールから MediaLive にアクセスして、 Inputs をポチったあと Create Input をポチります。
適当な名前を入れて、 RTMP (Push) を選びます。
ネットワークに関する設定です。
今回は試験なのでゆるゆるの条件で入れました。
Public なアクセスを許容し、
かつ 0.0.0.0/0 からのアクセス(すべての IP )からのアクセスを許します。
セキュリティにうるさい人やうるさい人が上司にいる人はちゃんとやってください。
Input destinations の設定です。
destination っていうとなんとなく output な気がしてしまいますが input にもつかうんですね。
ここではSINGLE_INPUT にします。 STANDARD でもいいですが、そのばあい冗長化のためにエンドポイントを2つ作る羽目になります。 別に多い分には困りませんが、やや料金が高くなります。
で、 Create すると
こんな画面にうつって、エンドポイントが得られます。
rtmp://~ をコピーしてOBSにはっつけます
ここで気をつけたいのは、
たとえば rtmp://1.1.1.1:1935/hoge/fuga という URL の場合,
rtmp://1.1.1.1:1935/hoge が OBSでいうところの「サーバー」で、
fuga がストリームキーになります。
こういうことです。
まだ、この時点はエンドポイントを作っただけで、中身が走っていませんから接続はできません。
久々にこういう手順書みたいのを書いてつかれたので今回はここまで。
次回にご期待。
書くとは限らないので先が気になる人はご自身でやってみてください。
MediaStoreでコンテナつくってCORS設定とポリシー編集して、
MediaLiveを設定してInputに今のやつを、OutputにMediaStoreを設定して、
チャンネル開始しておしまいです。
追記: 続き書きました