Amazon IVSで縦長Portraitなライブ入力の処理が改善されています

IVSでPortraitなライブストリーミングのABRの解像度やマニフェストファイル内の情報が変更になっています。高画質化が期待できる変更ですが、すでに利用している環境ではアップデートのタイミングや影響がないかも確認しておきましょう。
2022.08.29

はじめに

清水です。本エントリではAWSのマネージド型ライブストリーミングソリューションAmazon Interactive Video Service (Amazon IVS)のRelease Noteから、縦長Portraitなライブ入力処理の改善についてのアップデートをお届けします。Amazon IVS User Guide記載のRelease Note、June 9, 2022 「Vertical Video Improvement」として紹介されています。

縦長Portraitなライブ入力に対する処理が改善された

Release NoteのJune 9, 2022 「Vertical Video Improvement」について、内容を確認してみます。対象はVertical Video、つまり高さが幅より大きいコンテンツです。スマホの画面というとイメージしやすいのではないでしょうか。Portraitとも呼ばれますので、本エントリ内ではPortrait(縦長Portrait)などとも表記しています。

Amazon IVSでは以前からこのような縦長Portraitなライブストリーミングにも対応してました。

Portrait動画の入力処理の改善アップデートでは、(1) standard channel(入力動画に対してトランスコードを実施しABR (Adaptive Bit Rate)配信を行う)でABR配信される解像度が垂直方向を基準にスケーリングされるようになりました。また(2) マニフェストファイル内のNAME属性が水平方向(幅)に基づく命名規則となりました。

具体的に確認してみましょう。ちょうど変更前の縦長Portraitなライブ入力に対するマニフェストファイルを以下のエントリで確認していました。

Standard channelに対して1080x1920解像度で入力していたぐあいですね。

「IVSのABR設定」 - Amazon IVSのマニフェストファイルを眺めてみた | DevelopersIO

ABRについての情報を抜き出してみると以下となります。

NAME BANDWIDTH RESOLUTION FRAME-RATE
1920p 9,426,231 1080x1920 30.000
720p 2,312,689 404x720 30.000
480p 1,367,689 268x480 30.000
360p 630,000 200x360 30.000
160p 230,000 88x160 30.000

最もビットレート、解像度がよいものについては、1080x1920とフルHDの縦長Portraitな状態でした。しかしそれ以外の解像度については、1280x720などではなく、横長Landscapeの垂直解像度、720や480などに合わせて水平解像度が決まっているというぐあいでした。そのため、最も解像度が高いものと、2番目に高い解像度の差が開きすぎてしまっています。横長Landscapeで1920x1080の次の解像度が1280x720のように、垂直1920ピクセル(1080x1920)からいきなり垂直720ピクセル(404x720)に飛ぶのではなく、この間を保管するような解像度がほしいところです。

アップデートの1つ目、ABR配信の際のトランスコードの処理方法改善により以下が新しいABRの解像度例となります。マニフェストファイル上のNAME属性で示す部分が水平解像度として使用されています。横長Landscapeと同じ解像度を水平・垂直で反転させたものが縦長Portraitの解像度となるぐあいですね。

以前のNAME 以前のRESOLUTION 新しいNAME 新しいRESOLUTION
1920p 1080x1920 1080p 1080x1920
720p 404x720 720p 720x1280
480p 268x480 480p 480x852
360p 200x360 360p 360x640
160p 88x160 160p 160x284

例えば最上位のビットレート・解像度の再生が行えず、2番めに上位のビットレート・解像度のものを再生する場合、以前のトランスコード結果ではだいぶ解像度が下がってしまっていました。新たな解像度の設定では2番目以降のABR設定でも段階的に解像度が設定されているため、より適切なビットレートが選択でき、高品質なライブストリーミングが可能になっています

アップデートの2つ目についても確認してみましょう。上記の表にも記載していますが、マニフェストファイル上のNAME属性について、これまでの垂直解像度(高さ)に基づく命名規則から、水平解像度(幅)に基づく命名規則に変更となっています。

特に顕著なのは最上位のビットレート・解像度のものですね。(それ以外はNAME属性は変わらず、解像度のほうが変わっているとも言えます。)これはstandard channelのほかbasic channelにも適用されます。basic channelではトランスコードが行われず1つのビットレートのみですが、この唯一のビットレート設定のNAME属性が変更になる、というぐあいです。このNAME属性についてはPlayer側でビットレートの選択に使用するなどのほか、S3への自動録画のパス名などにも使用されます。NAME属性でハードコーディングなどしている場合は注意しましょう。

Portrait入力処理改善アップデートの適用タイミングについて

これらAmazon IVSのPortrait入力処理改善のアップデートの適用タイミングについても確認しておきましょう。特にマニフェストファイル内のNAME属性についての変更もあることから、Portrait入力でライブストリーミングを行っている環境では変更についての準備期間が必要な場合もあります。Relase Noteには以下のように記載されていました。

まず、過去6ヶ月間にAmazon IVSでPortrait(高さが幅より大きいコンテンツ)な入力でライブストリーミングを行っていないAWSアカウントについては、すでにこのアップデートが適用されています。(過去6ヶ月間についても、Release Noteのタイミングが2022年6月9日ということで、2022年1月9日以降と見るのが良いかと考えます。)

過去6ヶ月間(2022年1月9日以降)にAmazon IVSでPortraitなライブストリーミングを行っているAWSアカウントについては、2022年9月15日にこのアップデート内容を適用するとのことです。またこの場合、AWS Health Dashboardに本アップデート内容の通知が行われています。

Portraitなライブ入力処理の改善をマニフェストファイルで確認してみた

Portraitなライブ入力処理改善について、アップデート内容ならびに提供タイミングについて確認してきました。実際に過去6ヶ月にAmazon IVSでPortraitなライブストリーミングを行っていない(つまり本アップデートが適用されている)AWSアカウントで、実際にPortraitなライブストリーミングをしてマニフェストファイルから解像度情報を確認してみたいと思います。

まずはIVS Channelを作成します。Amazon IVSのコントロールプレーンは東京リージョンを使用しました。マネジメントコンソールの[Create channel]から進みChannel nameを適切に入力、Channel configurationは「Default configuration」を選択します。(つまりChannel typeはStandard channelが選択されます。)

Channel作成後、Stream configurationをStreaming Softwareに設定してライブストリーミングを行う準備をします。

Streaming SoftwareはiPhone XS上のLarix Broadcasterを使用しました。OrientationでPortraitを選択することで縦長の配信にします。

実際にPortraitなライブストリーミングができていることをマネジメントコンソールのPreveiwで確認しつつ、マニフェストファイルからトランスコードされているABRのビットレートを確認してみましょう。

% curl https://62xxxxxxxx2b.ap-northeast-1.playback.live-video.net/api/video/v1/ap-northeast-1.123456789012.channel.YQxxxxxxxxEz.m3u8
#EXTM3U
#EXT-X-SESSION-DATA:DATA-ID="NODE",VALUE="video-edge-65a0e0.tyo03"
#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="1661756184.18"
#EXT-X-SESSION-DATA:DATA-ID="TRANSCODESTACK",VALUE="2017TranscodeQS_V2"
#EXT-X-SESSION-DATA:DATA-ID="USER-IP",VALUE="XXX.XXX.XXX.XXX"
#EXT-X-SESSION-DATA:DATA-ID="SERVING-ID",VALUE="0433xxxxxxxxxxxxxxxxxxxxxxxxb00d"
#EXT-X-SESSION-DATA:DATA-ID="CLUSTER",VALUE="tyo03"
#EXT-X-SESSION-DATA:DATA-ID="ABS",VALUE="false"
#EXT-X-SESSION-DATA:DATA-ID="VIDEO-SESSION-ID",VALUE="73xxxxxxxxxxxxxxx28"
#EXT-X-SESSION-DATA:DATA-ID="BROADCAST-ID",VALUE="39xxxxxxx87"
#EXT-X-SESSION-DATA:DATA-ID="STREAM-TIME",VALUE="220.175154"
#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="YQxxxxxxxxEz"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="chunked",NAME="1080p",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-STREAM-INF:BANDWIDTH=8964370,RESOLUTION=1080x1920,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
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="720p30",NAME="720p",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-STREAM-INF:BANDWIDTH=2373000,RESOLUTION=720x1280,CODECS="avc1.4D401F,mp4a.40.2",VIDEO="720p30",FRAME-RATE=30.000
https://video-weaver.tyo03.hls.live-video.net/v1/playlist/[900文字超のランダムな文字列2].m3u8
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="480p30",NAME="480p",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-STREAM-INF:BANDWIDTH=1427999,RESOLUTION=480x852,CODECS="avc1.4D401F,mp4a.40.2",VIDEO="480p30",FRAME-RATE=30.000
https://video-weaver.tyo03.hls.live-video.net/v1/playlist/[900文字超のランダムな文字列3].m3u8
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="360p30",NAME="360p",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-STREAM-INF:BANDWIDTH=630000,RESOLUTION=360x640,CODECS="avc1.4D401F,mp4a.40.2",VIDEO="360p30",FRAME-RATE=30.000
https://video-weaver.tyo03.hls.live-video.net/v1/playlist/[900文字超のランダムな文字列4].m3u8
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="160p30",NAME="160p",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-STREAM-INF:BANDWIDTH=230000,RESOLUTION=160x284,CODECS="avc1.4D401F,mp4a.40.2",VIDEO="160p30",FRAME-RATE=30.000
https://video-weaver.tyo03.hls.live-video.net/v1/playlist/[900文字超のランダムな文字列5].m3u8

ABRについての情報を抜き出してみます。NAME属性については水平解像度(幅)を基準としたものとなっていますね。また解像度についてより段階的に設定されており、横長Landscapeと同様の高品質なライブストリーミングが実現できています。

NAME BANDWIDTH RESOLUTION FRAME-RATE
1080p 8,964,370 1080x1920 30.000
720p 2,373,000 720x1280 30.000
480p 1,427,999 480x852 30.000
360p 630,000 360x640 30.000
160p 230,000 160x284 30.000

まとめ

Amazon IVS (Amazon Interactive Video Service)、User Guide記載のRelease Noteから、縦長Portraitなライブストリーミング時の入力処理の改善についてのアップデートをお届けしました。アップデート発表のタイミング(Release Noteの日付)は2020/6/9と少し前のものですが、過去6ヶ月にPortraitなライブストリーミングを行っているAWSアカウントへのアップデート適用も2022年9月15日ともう間もなくとなっています。該当する環境ではマニフェストファイル内のNAME属性などをハードコーディングしていないかなど一度確認し、必要に応じて適切な対応をするようにしましょう。