Amazon Interactive Video Service(IVS)は、低遅延のライブ配信からVODまでをシームレスに対応することができる神サービスです。
ですが、2023年10月現在の仕様では気をつけないといけない制約事項が存在します。
技術系のブログでこの部分を取り上げているものがなかったので、記事にします。
該当機能
現在は IVSでは2つのモードがあります。
- Low-latency Streaming
- Real-time Streaming
今回は、Low-latency Streaming(超低遅延)が対象となります。
違いに関しては、以下ドキュメントの引用をご覧ください。(DeepLで翻訳しています。)
遅延
遅延とは、カメラがライブストリームをキャプチャしてから、視聴者の画面にストリームが表示されるまでの遅延のことです。Amazon IVSは以下のような映像配信機能を備えています:
超低遅延 - Amazon IVSチャンネルは5秒以下の遅延でビデオを配信できます。
IVSドキュメントより引用
リアルタイムレイテンシー - IVSのステージは300ミリ秒以下のレイテンシーでビデオを配信できます。ステージの参加者全員がこの強化された "リアルタイム遅延 "を体験します。(ステージがIVSチャンネルにブロードキャストされる場合、チャンネルの視聴者は超低遅延を体験できます。)
従来のOTT(Over-The-Top)ストリームの場合、レイテンシは30秒にもなる。
ポイント
それぞれの違いをざっくりいうと、Low-latency Streamingは最適化されたHLSで、Real-time Streamingは大規模配信に対応したWEBRTCみたいな形式です。
制約事項
Low-latency Streamingは「超低レイテンシー」の設定選択することで、5秒以下の遅延で配信が可能になります。
標準レイテンシーだと、15秒程度の遅延になります。
これをONにして、プレイヤーの参照先を IVSのチャンネルにしてあげれば低遅延でのライブ配信が可能です。
ですが、iOSのブラウザでは、この設定にしていても20秒程度の遅延での配信になります。
この部分は以下ドキュメントに記されています。
ポイント
これはiOSがMedia Source Extensions (MSE)に対応していない為、実現できない形式になります。
また、さらっとドキュメントを読むと、iPadOSも対象外に見えますが、私の環境ではiPadOSは4秒程度の遅延で行けました。
制約事項への対策
WEBアプリだと対応ができないので、ネイティブアプリで提供する必要があります。
SDKやReactNativeでラッパーしたサンプルコードが提供されているので、モバイルアプリの開発経験者の方なら割とサクッと行けるかも知れませんね。
備考
IVSをバックエンドで利用しているTwichでもiOSは低遅延モードが対象外になっていますね。(なぜかiPadも)
- 低遅延モードに対応したブラウザ/プラットフォームを教えてください。
現在、低遅延モードはデスクトップのChrome、Firefox、Edge、Twitchデスクトップアプリに対応しています。また、低遅延モードはAndroidのTwitchモバイルアプリ、Android TV、Xbox One、PS4にも対応しています。
最後に
Appleの独自仕様には毎度苦慮させられますね。。。
以上、どなたかのお役に立てれば幸いです。