[UPDATE] Amazon IVSのbasic channelがフルHDまでの入力解像度に対応しました

Amazon IVSのライブ動画入力コストがより安価なbasic channel、これまで最大入力解像度/ビットレートがSD/1.5Mbpsでしたが、フルHDならびにHDの入力解像度に対応しビットレートも3.5Mbpsまで拡張されました。
2022.08.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

清水です。本エントリでお伝えするアップデート情報はこちら!AWSのマネージド型ライブストリーミングソリューションであるAmazon Interactive Video Service (Amazon IVS)のbasic channelがフルHDまでの入力に対応しました。(2022/08/16付でポストされたアップデート情報となります。)

Amazon IVSではchannel typeとして、standard channelのほかにbasic channelというものが用意されています。大きな違いはトランスコードの有無で、standard channelはIVSにより自動で複数のビットレートにトランスコードされ、Adaptive Bit Rate (ABR)による複数解像度・ビットレートの配信が行われます。対してbasic channelは入力した映像をそのまま配信するのみです。このトランスコード有無の違いからか、コスト(ライブ動画 入力 にかかるコスト)もstandard channelが2.00USD/hourに対してbasic channelが0.20USD/hourと異なっていました。

このような特徴もあってか、このbasic channelについてはその入力がSD解像度(480p)、1.5Mbpsが上限とされてきました。(対してstandard channelはフルHD解像度(1080p)、8.5Mbpsの入力に対応します。)今回のアップデートではこのbasic chanenlの最大入力が拡張され、フルHDまでの解像度に対応するようになりました。(具体的にはフルHD(1080p)、およびHD(720p)に対応。)また上限のビットレートも3.5Mbpsまでと拡張されています。(standard channelの8.5Mbpsよりかは低い上限である点には注意しましょう。)

トランスコードを行わない点、ならびにライブ動画入力のコストがstandard channelよりも低コストである点は引き続き同様です。(ライブ動画入力にかかるコストはこれまでと変わらず0.20USD/hourのままです。)ABRを行う高品質なライブストリームでなくてよく、コストを抑えてライブストリームを行いたい、といった場合の選択しとして使用できるbasic channel、メリットはそのままにフルHD画質に対応したというかたちですね。

standard channel basic channel(変更前) basic channel(変更後)
トランスコード あり (ABR配信) なし なし
最大入力解像度 フルHD (1080p) SD (480p) フルHD (1080p)
最大ビットレート 8.5Mbps 1.5Mbps 3.5Mbps
ライブ動画入力コスト 2.00USD/hour 0.20USD/hour 0.20USD/hour

本エントリでは、実際にAmazon IVSのbasic channelでフルHD画質の配信をしてみたのでまとめてみたいと思います。

Amazon IVSのbasic channelでフルHD画質な配信をしてみた

それでは実際にIVSのbasic channelでフルHD解像度での配信をしてみたいと思います。まずはIVS channelの作成です。コントロールプレーンは東京リージョンを選択しました。Channel nameに適切な値を入力、Channel configurationではCustom configurationを選択します。Channel typeでBasicを選択しましょう。Video latencyはUltra-low latencyのままとしました。今回はプライベート配信や録画などは行いませんので、そのまま画面下部の[Create channel]ボタンでchannelを作成します。

basic channelが作成できました。続いてStream configurationの情報をStreaming Softwareに設定していきましょう。

IVSのbasic channelでは、フルHD(ならびにHD)解像度の場合、入力ビットレートの上限は3.5Mbpsまでとなっています。(対してstandard channelでは8.5Mbpsまでです。)Amazon IVS Service Quotasを確認すると、「If you exceed this threshold, the stream probably will disconnect immediately.」と注意書きがありますので、きちんとビットレートを設定できるStreaming Softwareを選択し、適切なビットレートとして上限を超えないようにします。

今回はStreaming SoftwareとしてiPhone XS上のLarix Broadcasterを使用しました。Resolutionでは「1920x1080」、Frame rateは「30 fps」、Orientationは「Landscape」を選択します。ENCODINGの項目で、Bitrateを「3,000 Kbps」としました。Keyframe frequencyは「2 sec」に、またH.264 profileは「Main」にしています。

Connectionの設定で先ほど作成したchannelのStream configuration情報を入力します。いざ、Streaming Softwareで映像を打ち上げてライブストリーミングを開始しましょう。以下のような視聴ページを作成して視聴を確認しました。問題なく視聴ができています。

ivs-basic-channel.html

<html>
  <head>
    <title>ivs-basic-channel</title>
    <style>
      video {
          height: 100%;
          width: 100%;
          left: 0;
          top: 0;
          position: fixed;
      }
    </style>
  </head>
  <body>
    <video id="video-player" playsinline controls></video>
    <script src="https://player.live-video.net/1.12.0/amazon-ivs-player.min.js"></script>
    <script>
      var PLAYBACK_URL = "https://62xxxxxxxx2b.ap-northeast-1.playback.live-video.net/api/video/v1/ap-northeast-1.123456789012.channel.0kxxxxxxxxZe.m3u8";
      if (IVSPlayer.isPlayerSupported) {
          const player = IVSPlayer.create();
          player.attachHTMLVideoElement(document.getElementById('video-player'));
          player.load(PLAYBACK_URL);
          player.play();
      }
    </script>
  </body>
</html>

マネジメントコンソールからIVS channel側の各種メトリックについても確認してみましょう。ChannelのStream sessionsの項目、Stream IDを選択するとストリームの各種メトリックが参照できます。

ビットレートは3,000kbps前後で推移していること、またEncoder settingsとして解像度が1920x1080に設定されていることなどが確認できますね。きちんとbasic channelでのフルHD、1920x1080解像度でのライブストリーミングが行えていることが確認できました。

マニフェストファイルについても確認してみましょう。(参考までに、デフォルト値で設定したchannel(つまりstandard channel)の場合はエントリ「Amazon IVSのマニフェストファイルを眺めてみた | DevelopersIO」のようなマニフェストファイルが確認できます。)

Playback URLで示されているトップレベルマニフェストファイルをcurlコマンドで参照してみます。ABR配信であればここで複数ビットレート・解像度のマニフェストファイルが記載されているわけですが、以下のようにStreaming Softwareから打ち上げているのと同じ解像度(フルHD、1920x1080)のみのストリーミングとなっていることが、マニフェストファイルからも確認することができます。

% curl https://62xxxxxxxx2b.ap-northeast-1.playback.live-video.net/api/video/v1/ap-northeast-1.123456789012.channel.0kxxxxxxxxZe.m3u8
#EXTM3U
#EXT-X-SESSION-DATA:DATA-ID="NODE",VALUE="video-edge-1c8a06.tyo05"
#EXT-X-SESSION-DATA:DATA-ID="MANIFEST-NODE-TYPE",VALUE="weaver_cluster"
#EXT-X-SESSION-DATA:DATA-ID="MANIFEST-NODE",VALUE="video-weaver.tyo03"
#EXT-X-SESSION-DATA:DATA-ID="SUPPRESS",VALUE="true"
#EXT-X-SESSION-DATA:DATA-ID="SERVER-TIME",VALUE="1661693226.05"
#EXT-X-SESSION-DATA:DATA-ID="TRANSCODESTACK",VALUE="transmux"
#EXT-X-SESSION-DATA:DATA-ID="USER-IP",VALUE="XXX.XXX.XXX.XXX"
#EXT-X-SESSION-DATA:DATA-ID="SERVING-ID",VALUE="e760xxxxxxxxxxxxxxxxxxxxxxxxee27"
#EXT-X-SESSION-DATA:DATA-ID="CLUSTER",VALUE="tyo05"
#EXT-X-SESSION-DATA:DATA-ID="ABS",VALUE="false"
#EXT-X-SESSION-DATA:DATA-ID="VIDEO-SESSION-ID",VALUE="5766xxxxxxxxxx20372"
#EXT-X-SESSION-DATA:DATA-ID="BROADCAST-ID",VALUE="39xxxxxxx55"
#EXT-X-SESSION-DATA:DATA-ID="STREAM-TIME",VALUE="581.051977"
#EXT-X-SESSION-DATA:DATA-ID="FUTURE",VALUE="true"
#EXT-X-SESSION-DATA:DATA-ID="MANIFEST-CLUSTER",VALUE="tyo03"
#EXT-X-SESSION-DATA:DATA-ID="ORIGIN",VALUE="sin03"
#EXT-X-SESSION-DATA:DATA-ID="C",VALUE="[1000文字超のランダムな文字列]"
#EXT-X-SESSION-DATA:DATA-ID="CUSTOMER_ID",VALUE="123456789012"
#EXT-X-SESSION-DATA:DATA-ID="CONTENT_ID",VALUE="0kxxxxxxxxZe"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="chunked",NAME="1080p",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-STREAM-INF:BANDWIDTH=3565927,RESOLUTION=1920x1080,CODECS="avc1.4D0028,mp4a.40.2",VIDEO="chunked",FRAME-RATE=30.000
https://video-weaver.tyo03.hls.live-video.net/v1/playlist/[900文字超のランダムな文字列1].m3u8

この唯一のビットレート・解像度設定となるマニフェストファイルについても確認しておきましょう。このマニフェストファイルではセグメントファイルへのURLが記載されていますので、このセグメントファイルの再生によりライブストリーミングが実現されているぐあいです。

% curl https://video-weaver.tyo03.hls.live-video.net/v1/playlist/[900文字超のランダムな文字列].m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:288
#EXT-X-TWITCH-LIVE-SEQUENCE:288
#EXT-X-NET-LIVE-VIDEO-ELAPSED-SECS:576.510
#EXT-X-NET-LIVE-VIDEO-TOTAL-SECS:608.536
#EXT-X-DATERANGE:ID="source-1661693224",CLASS="live-video-net-stream-source",START-DATE="2022-08-28T13:27:04.902Z",END-ON-NEXT=YES,X-NET-LIVE-VIDEO-STREAM-SOURCE="live"
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:04.902Z
#EXTINF:2.001,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列2].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:06.903Z
#EXTINF:2.002,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列3].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:08.905Z
#EXTINF:2.002,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列4].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:10.907Z
#EXTINF:2.002,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列5].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:12.909Z
#EXTINF:2.001,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列6].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:14.910Z
#EXTINF:2.002,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列7].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:16.912Z
#EXTINF:2.002,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列8].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:18.914Z
#EXTINF:2.002,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列9].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:20.916Z
#EXTINF:2.002,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列10].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:22.918Z
#EXTINF:2.001,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列11].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:24.919Z
#EXTINF:2.002,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列12].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:26.921Z
#EXTINF:2.002,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列13].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:28.923Z
#EXTINF:2.002,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列14].ts
#EXT-X-PROGRAM-DATE-TIME:2022-08-28T13:27:30.925Z
#EXTINF:2.001,live
https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列15].ts
#EXT-X-PREFETCH:https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列16].ts
#EXT-X-PREFETCH:https://video-edge-1c8a06.tyo05.hls.live-video.net/v1/segment/[900文字超のランダムな文字列17].ts

まとめ

Amazon Interactive Video Service (Amazon IVS)の機能アップデート、basic channelの最大入力解像度ならびにビットレートの拡充について確認してみました。ABRなどは不要でなるべくコストを抑えたライブ配信を行いたいといった場合に活躍するbasic channel、これまで最大入力解像度がSD (480p)までということがネックになりstandard channelのほうを利用するというケースもあったのではないでしょうか。最大入力解像度がフルHD (1080p)まで拡張されたことで、より積極的にbasic channelを使いコストを最適化することができるかと思います。basic channelの特徴であるトランスコードを行わない(ABR配信ではなく入力解像度そのままの配信である)点、そしてフルHDの入力でも最大ビットレートが3.5Mbpsに抑えられている点(standard channelでは8.5Mbps)に注意して活用しましょう。