ATEM Mini ProからAmazon Interactive Video Serviceに配信してみた

Pocket

AmazonのクラウドサービスAWSの新サービスとして、簡単に自サイトでライブ配信を行うAmazon Interactive Video Service(以下IVS)をリリースしました。

従来、自社サイトにライブ動画を貼り付け用とすると、

  1. Youtube LiveやTwitchなどの配信サービスを使い、リンクを自社サイトに貼る
  2. 自営サーバーを建てる

といった選択肢が主流でした。前者はお手軽ですが、プライベートな配信にはやや難があります。一応パスワードがかけられたりもしますが、やっぱり業務用となんかだと公開配信サービスを通すことが難しかったりします。他方、自営サーバーも最近ではより簡単に構築できるようにはなってきているものの、基本的なWebサーバー運用の知識は必要ですし、エンコード性能がそれなりにあって、視聴者が多い場合は上り帯域が太いサーバーが必要だったりします。

IVSを使うと、OBS Studio、ATEM Mini Pro、LiveShellシリーズのようなRTMP送信できる配信機材から簡単にアップロードでき、また様々なプラットフォーム、回線速度に応じたトランスコードや配信側も丸投げできます。自社サイトには極簡単なHTMLを貼り付けるだけで済みます。HTMLに各種アクセス制限をかければプライベートな用途にも使えるんじゃないでしょうか。配信時間、視聴者数、解像度に応じて利用料金がかかりますが、上記記事の概算などをみても、小規模な配信であれば気にするような額にはならなそうです。

■ATEM Mini Proからの配信をしてみる

2021.03.08追記:コメントいただいて気付いたのですが、現在AWSのTLS 1.1未満廃止の影響でATEM Mini ProからAmazon IVSへの配信は利用できなくなっているようです(ATEM Mini Pro側がファームウェア8.6現在TLS 1.2に非対応なため)。公式サポートに連絡したところ問題は把握しており協議中どの返信がありました。対応を期待するしかなさそうです。

とりあえず映像と音をが出るところまでテストしてみたので手順をまとめてみます。AWSのアカウントは既にもっている前提で進めます。利用に応じて料金がかかりますので自己責任でお願いします。

・IVSでチャンネルを作成

IVSのトップへ行き「チャネルの作成」をクリック。以下のような画面が出るので、「チャネル名」を指定し、「チャネル設定」はとりあえず「デフォルト設定」にしておきます。チャネル名は視聴者に見えるものではなく、IVS上で自分で区別をするためのものと思って良いでしょう。

チャネル作成画面

・配信情報を確認する

作成後はこんな画面になります。「ライブストリーム」(=プレビュー画面)はまだ不要なので畳んであります。この画面で重要なのは、

  1. 取り込みサーバー
  2. ストリームキー
  3. 再生URL

の3つの情報です。それぞれ先頭のコピーアイコンからクリップボードにコピーできるので必要になったらそこから取得します。

チャンネル情報

・ATEM Mini Proに設定を追加する

ATEM Mini Proの配信サーバーはデフォルトではFacebook/Twitch/Youtubeの3つしか選べませんが、設定ファイルをテキストエディタで書き換えることでカスタムサーバーを追加することができます。

方法としては、

  • ファイル->別名で保存から「出力」の「設定」のみチェックして書き出したXMLを編集し、それを「復元」で読み込む
  • デフォルトのサーバー設定ファイルを書き換える

の2つがあります。前者はサーバー設定のみを独立して保存できますが、ATEM Mini Proの電源を入れる度に再読込させなければなりません。後者は自動で読み込まれますが、おそらくATEM Software Controlをアップデートすると初期化されてしまう気がします。毎回読み込ませるのは面倒なので、ここでは後者の手順をとってみます。

設定ファイルのパスは、

になります。<service>~</service>ではさまれた設定がFacebook/Twitch/Youtbeと3組あると思うので、最後のYoutubeの<service>~</service>間を複製し、以下を書き換えます。

  • サーバー名を示す<name></name>タグを適当な名前に書き換える。ここでは「Amazon IVS」。
  • <servers>タグの中にPrimaryとSecondaryの2つのサーバー指定があるので、Secondaryの方を削除する(<server>~</server>)
  • Primaryサーバーの<url></url>タグ内にIVSコンソールから「取り込みサーバー」をコピペする
  • 直下に<key></key>タグを追加し、IVSコンソールから「ストリームキー」をコピペする

以上です。<profiles>以下にビットレート指定が何パターンかありますが、とりあえずそのままで良いでしょう。こんな感じになります。なお、上書き保存には管理者権限が必要になります。

ATEM Software Controlを起動すると右上の「出力」タブの「ライブ配信」「配信サービス」のところに追加したサーバー名が選択可能になっており、「サーバー」は1つだけのPrimaryが選択され、「キー」にストリームキーが入り、「品質」がStreaming Highになっているはずです(画像はオンエア状態)。

追加したサーバーが選択された状態

ここまでくれば後はATEM Software Controlか本体の「ON AIR」ボタンを押すだけで配信が始まるはずです。「ON AIR」の赤文字が光ればOK。点滅する場合はネットワーク帯域が足りないなど問題がある状態のようです。ウチの状態では、なぜか一度切断すると再度ON AIR状態にならず点灯と点滅を交互に繰り返す状態になりました。ATEM Mini Proの電源を入れ直すとつながりますが若干不安定ですね。一瞬ON AIRになった気がして放置していると実はつながってない、なんてこともあり得るので困りものです。

「ON AIR」が安定して赤点灯になるようなら、もういちどIVSコンソール画面に戻り「ライブストリーム」ブロックを展開表示してみましょう。左下の「ステータス」が「LIVE」になって映像が見えていれば成功です!

・Webページに挿入する

再生URLは拡張子がm3u8で、例えばVLCなどで「ファイル」「ネットワークストリームを開く」にURLをコピペすれば視聴できます。ただそれだと不便だし画質もあまりよくないようです。簡単にブラウザでWebページを開いて視聴可能なようにしてみましょう。

SDK for WebのページにあるSample Codeをコピーして自サイトにHTMLファイルとして保存し、以下を修正します。

  • 1行目のscriptタグのsrc属性内のパスで「VERSION_NUMBER」となっている部分を「1.0.0」に書き換える(執筆時点)
  • 8行目の「PLAYBACK_URL」をIVSコンソールの再生URLに置き換える。

基本的にはたったこれだけでOKです。スタイルシートもなにもないので極シンプルですが、ライブ中であれば映像が映るはずです。ライブが開始されてないと真っ白な画面になります。おそらく回線速度に応じた解像度でドットバイドットで表示されるんだと思います。固定したい場合はスタイルシートなどで指定すれば良いでしょう。コンソールのプレビューのような画質やサイズ、音量を指定するUIもありません。そういう凝ったことをしたい場合は、こちらを参考にVideo.jsを使えば良さそうですがまだ試していません。

ここまでざっと30分もあれば設定可能でした。良い時代になったものですね。OBS StudioやLiveShellなどを使う場合も、基本的には同じで「取り込みサーバー」「ストリームキー」を然るべき設定項目にコピペすればいけるんじゃないでしょうか。

■セキュアな配信が可能なのか?

これでプライベートな配信をしようとした場合、どんな手があるかですが、すぐ思いつくのはWebページに対してのアクセス制限です。BASIC認証をかけるとか、アクセス元をIPアドレスで制限するとか、ブラウザをクライアント証明書で絞る、とかですね。ただ一度アクセスできた状態でHTMLソースをみると、再生URL(m3u8)は丸見えです。これを視聴者が勝手に共有してしまうとアウトな気がします(先に書いたように再生URL単体をVLCなどで開いて再生は可能)。再生URL自体にアクセス制限をかける方法はざっと見た限りではなさそうでした。まぁそれいったらYoutube Liveで配信パスワードを漏洩されたら同じですかね。

アクセス制限を厳密にかつ簡単にしやすいのはFacebook Liveとかでしょうか。フレンド限定とか、グループで流すとか。ただあんまり画質は良くない印象です(きちんと調べてないですが)。

クラウドアレルギーな人がいる案件で使いやすいかというと、結局AWSというクラウドサービスは使っていることにはなりますので、なんともですかねー。

 

■まとめ

ともあれ、比較的簡単に配信環境が実装できることがわかりました。既存配信サービスとどう使い分けるかは案件次第になりそうですが、選択肢として割と有望そうな気がします。

「ATEM Mini ProからAmazon Interactive Video Serviceに配信してみた」への8件のフィードバック

  1. 参考にさせて頂きました。

    IVSを立ち上げて、ATEM Min Pro、ATEM Software Control 8.6 で同じ事をしたのですが、
    ON AIR で点滅状態のままでした。

    上りも620Mほど出ています。

    OBSでテストしてみたのですが、IVSは正しく動作しました。

    2020年7月16日の段階のバージョンでうまくいったと思いますが、
    最新のATEM Software Control 8.6 でも動作しますでしょうか?

    もし良かったら教えて頂ければ幸いです。

    1. こんにちは。
      ご指摘を受けて久しぶりにテストしたところこちらの環境でもON AIRが点滅してダメでした。
      調べてみたところ、Blackmagicのフォーラムでこれを見つけました。
      https://forum.blackmagicdesign.com/viewtopic.php?f=4&t=129443
      最後の方の2021年3月頃の書き込みで、AWSが暗号化プロコルにTLS v1.2を要求するようになったのに対し、ATEM Mini Proがv1.1のままなのが悪いという指摘があります。TLS v1.1は脆弱制が見付かっていて2020年夏頃を目処に各社主要ブラウザでもサポートを外した古い規格で、IVSのドキュメント履歴をみると2月17日にTLS 1.2必須という表記が追加されたっぽいので、ここを境にダメになったということじゃないでしょうか。
      https://docs.aws.amazon.com/ivs/latest/userguide/doc-history.html
      これはもうBlackmagic側がファームウェア更新で対応してくれるのを待つしかないかもですね。

        1. ありがとうございます!
          めっちゃ助かりました。

          リクエストも出しました。

          改善されると良いですが…

          1. こちら返信があり、本社は把握済みで協議中だそうです。
            対応されるといいですね。

  2. ありがとうございます。

    私のところにも返信来ました。
    把握しており、協議中との事でした。

    一緒にここまで対応して頂き感謝です!

  3. 2021/4/9のBlackmagic ATEM Switchers 8.6.1 で
    同シリーズの暗号化にTLS 1.2のサポートを追加
    されました。

    ありがとうございます!!

    1. 私も昨日更新内容をみて「来たか!」と思いました。
      まだ試せていませんが、とりあえずひと安心ですね!

furuta へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)