[UPDATE] Amazon IVSでライブ入力中断時のストリームのマージ機能がサポートされました

Amazon IVSの自動録画機能、これまではライブ入力が中断してしまった場合は別の動画コンテンツとして保存されていました。ストリームのマージ機能がサポートされ一定期間のストリームの中断であれば同じ動画コンテンツとして扱われるようになりました。
2022.08.31

はじめに

清水です。AWSのマネージド型ライブストリーミングソリューションであるAmazon Interactive Video Service (Amazon IVS)でライブ入力が中断された際のストリームのマージ機能がサポートされました。S3への自動録画機能を使用している際にライブ入力が中断しても、一定期間内に入力を再開すれば自動録画側では同じストリームとして扱われるようになります。2022/08/30付でAWS Media Blogにポストされたアップデート情報となります。

Amazon IVSのUser Guide上ではDocument Historyに「Merge fragmented streams」としてまとめられています。

Document History - Amazon Interactive Video Service

Amazon IVSではStreaming Softwareからの映像の打ち上げ(IVS側のライブ入力)が中断されてしまうと、映像が再開しても内部的には別のStream sessionとして扱われます。個別のStream IDが割り当てられるぐあいですね。Stream sessionが変わってもPlayback URLは同一であるため、ライブ視聴においては同じエンドポイントを参照し続けていればストリーミングが再開されました。

しかしS3への自動録画機能を使用している場合、このライブ入力が中断されStream sessionが変わってしまうと別のストリームとして扱われ、再生するマニフェストファイルへのパスなども別のものとして扱われてしまいました。ストリームの中断が動画コンテンツとしての中断なのか意図しない中断なのかの判別ができず、前者の別の動画コンテンツとして扱ってしまう、というぐあいです。このため自動録画した動画コンテンツをVODとして公開するなどの場合に、ストリームの中断が発生すると動画コンテンツを1つにまとめ直すなどの作業が別途発生していました。

今回のアップデートにより、一定期間(1秒から300秒でRecording configurationにて設定可能)内のライブ入力の中断であれば、自動録画側では1つのストリーム、動画コンテンツとして扱われます。Streaming Softwareからの映像を打ち上げが中断しても再生用のマニフェストファイルが1つのままですので、そのままVODコンテンツとして公開するといったことが可能になります。

本エントリではこのライブ入力中断時のストリームのマージ機能(Merge fragmented streams)について、実際に確認してみたのでまとめてみたいと思います。

Amazon IVSのフラグメント化されたストリームのマージ機能を確認してみる

フラグメント化されたストリームのマージ機能(Merge fragmented streams)について実際に確認をしてきます。まずは従来と同様、この機能が無効の状態でライブ入力の中断が起きたときの挙動を確認し、ついでMerge fragmented streams機能を有効に指定ライブ入力中断時の挙動を確認します。

Merge fragmented streamsがオフの場合にライブ入力が中断した場合

まずは今回のアップデート機能が無効の状態(これまでの状態)でのライブ入力中断の際の、S3への自動録画の挙動を確認しておきましょう。Channel nameを指定してchannelを作成していきます。Channel configurationはDefault configurationで進めました。

Record and store streamsでAuto-record to S3を有効にします。Recording configurationは新規に作成しました。Merge fragmented streamsの項目が今回新たにサポートされた機能ですね。まずは無効の状態の動作を確認したいためDisabledで進めます。

Channel作成後、Stream configurationをStreaming Softwareを設定してライブストリーミングをはじめます。Streaming Softwareとして今回はiPhone XS上のLarix Broadcasterを利用しました。マネジメントコンソールのプレビュー画面でライブストリーミングを確認しつつ、Streaming Software側で映像の打ち上げを停止します。10秒ほど停止したあと、映像の打ち上げを再開します。この動作を2回繰り返しました。ライブ入力中断の想定です。

Streaming Software側で停止・再開したあと、ライブストリーミング自体も再開されますが、以下のようにプレビュー画面でのDurationはリセットされます。

Stream sessionについても新しいStream IDが振られたものが生成されています。このためDurationがリセットされているわけですね。

停止・再開を2度繰り返して、ライブストリーミング終了後以下のように3つのStream sessionがある状態となりました。

自動録画されたS3側についても確認してみましょう。S3のプレフィックスは以下の形式です。

  • /ivs/v1/${AWS_ACCOUNT_ID}/${CHANNEL_ID}/${YEAR}/${MONTH}/${DAY}/${HOURS}/${MINUTES}/${RECORDING_ID}

停止した段階で別の自動録画が開始されるため、3つの動画コンテンツ(マニフェストファイルなどの動画コンテンツファイル群)が生成されていることとなります。自動録画開始のタイミングが異なるため${MINUTES}の部分で別れて生成されていました。

再生用のマニフェストファイルへのパスについても以下の3つとなるわけです。m3u8ファイルと同じ階層配下にセグメントファイルも格納されているため、こちらもやはりパスがそれぞれ異なることとなります。

  • /ivs/v1/123456789012/NBxxxxxxxxCL/2022/8/31/3/29/Ifxxxxxxxxyz/media/hls/master.m3u8
  • /ivs/v1/123456789012/NBxxxxxxxxCL/2022/8/31/3/31/F3xxxxxxxxnu/media/hls/master.m3u8
  • /ivs/v1/123456789012/NBxxxxxxxxCL/2022/8/31/3/33/yKxxxxxxxxVX/media/hls/master.m3u8

これはStream sessionの詳細からも確認できます。Eventsの項目を確認すると、Stream sessionに対して開始終了ごとにRecordingも開始終了していることがわかります。

IVSへの入力が途絶えても、映像の打ち上げ再開時に自動でIVSのライブストリーミングも再開、また自動録画も再開されることは良いのですが、自動録画のパスが別れてしまい別のコンテンツ扱いとなってしまうことが問題になるケースもあります。例えば自動録画をVODコンテンツとして提供する場合に、1つの動画コンテンツとしてまとめ直すなどの手間が生じることとなります。

Merge fragmented streamsをオンの状態でライブ入力が中断した場合

これまでの挙動、Merge fragmented streamsが無効の状態では、ライブ入力の中断(Streaming Software側のライブストリーミングの一時停止)で発生した場合に自動録画の動画コンテンツが分割されてしまうこと(フォルダ構成が別のものになり、また再生用マニフェストファイルも別ものとなってしまうこと)がわかりました。

続いて今回のアップデート、Merge fragmented streamsを有効にした場合の挙動を確認します。こちらもChannelの作成から進めます。Channel configurationは無効の場合と同様、Default configurationで進めます。

Record and store streamsでAuto-record to S3を有効し、Recording configurationを新規に作成します。Merge fragmented streamsの項目を有効(Reconnect in a window)にして、Reconnect windowで60秒を指定しました。ストリーミングが中断されても、この60秒の間に再接続があれば自動録画はマージされて1つの動画コンテンツとして扱われます。

Streaming Softwareで停止・再開するとライブストリーミングも再開しますが、Durationがリセットされるという挙動はMerge fragmented streamsがオフの場合と変わりありません。

Stream sessionが新しいStream IDで新たに作成される点も同じです。

停止・再開を2回繰り返し、ライブストリーミングを終了したあとは3つのStream sessionが作成されていました。

さて、自動録画されているS3のほうを確認してみましょう。先ほどは動画コンテンツとして、${MINUTES}の箇所で3つに別れているぐあいでした。今回はStream sessionが3つに対して、${MINUTES}の階層で1つのみです。

動画コンテンツとして1つのみの扱いになります。再生用マニフェストファイルへのパスは以下のみということとなります。

  • ivs/v1/123456789012/NRxxxxxxxxQD/2022/8/31/3/39/bCxxxxxxxx9S/media/hls/master.m3u8

もちろん、Streaming Softwareで映像の打ち上げが中断されていたタイミングでは映像自体は途絶えているわけですが、1つの動画コンテンツとして扱えることは大きいですよね。自動録画をそのままVODコンテンツとして提供する、といった場合にこのままマニフェストファイルを参照させればよいわけです。

Stream sessionの詳細ページ、Eventの箇所にこの動作の仕組みがわかる部分があります。1つ目のStream sessionではRecording startのEventのみ発生、Recording Endは発生していません。2つ目ではRecordingに関するEventはなし、3つ目でStreamの終了時にRecording Endが発生しています。先ほどのMerge fragmented streamsをオフにした場合の挙動(Streamの開始終了ごとにRecordingも開始終了)と異なりますね。

まとめ

Amazon IVSの自動録画機能のアップデート、中断されたストリームのマージ機能について確認してみました。Amazon IVSでは各種Broadcast SDKを使用してモバイル端末やWebブラウザから気軽にストリーミングができることもメリットかと思います。反面、ストリーミングの中断はどうしてもゼロには抑えられないものかとも考えます。そのため、これまでは自動録画したコンテンツの公開に際して中断が起こっていればコンテンツの統合などの対応が必要でしたが、今回のアップデートにより一時的な中断に対しても1つの動画コンテンツとして録画が可能になりました。大変便利に活用できる機能追加だと思います。

なお、ライブ入力の再開時に解像度やビットレートなどが大幅に変わる場合には、ストリームをマージせずに別コンテンツとして扱われるようです。(Merge Fragmented Streams - Auto-Record to Amazon S3 - Amazon Interactive Video ServiceのEligibilityに記載があります。)ネットワークなどでのライブ入力中断のみに対応し、Streaming Software側の設定変更によるライブ入力の中断には対応できない点に留意しておきましょう。