このトピックでは、Real-Time Streaming (RTS) を使用してライブストリーミングの遅延を 400 ms 未満に短縮する方法について説明します。これにより、ユーザーにスムーズでリアルタイムな視聴体験を提供できます。
ソリューション概要
このリアルタイムストリーミングソリューションは、Alibaba Cloud Global Real-Time Network (GRTN) を使用します。リンク全体で Web Real-Time Communication (WebRTC) プロトコルを使用し、200 ms から 400 ms のエンドツーエンド遅延を実現します。このソリューションは前方互換性もあり、標準ライブストリーミングにシームレスに拡張できます。
RTS を使用して 200 ms から 400 ms のエンドツーエンド遅延を実現:
ストリーマーはデバイスでライブコンテンツをキャプチャし、Push SDK を使用して RTS (WebRTC) プロトコル経由で Alibaba Cloud のエッジノードにライブストリームをアップストリーミングします。
ライブストリームは、インテリジェントルーティングと Quality of Service (QoS) 技術を使用して、GRTN ネットワークの 3,200 以上のノード間でリアルタイムに伝送されます。
視聴者は、最寄りの Alibaba Cloud エッジノードから RTS (WebRTC) プロトコル経由でストリームをプルして再生します。エンドツーエンド遅延は 200 ms から 400 ms です。
(オプション) バイパスインジェストを有効にして ApsaraVideo Media Processing、RTS、および標準ライブストリーミングを使用:
バイパスインジェストを有効にすると、ストリーマーがアップストリーミングを開始した後、ApsaraVideo Live が自動的にコンテナフォーマットを変換し、RTMP ストリームを生成します。
このストリームに対して、トランスコーディング、録画、スナップショットなどのメディアサービスを設定できます。
低遅延のストリームフェッチングを維持するために、視聴者は引き続き RTS (WebRTC) を使用できます。この場合、エンドツーエンド遅延は 400 ms から 800 ms になります。
標準ライブストリーミングを使用したい場合は、RTMP、FLV、HLS などのプロトコルを使用してストリームをプルし、再生できます。
実装
前提条件
ApsaraVideo Live を有効化していること。詳細については、「ApsaraVideo Live の有効化」をご参照ください。
ApsaraVideo Live クイックスタート ガイドの「取り込みドメインとストリーミングドメインの追加」、「CNAME の設定」、および「取り込みドメインとストリーミングドメインの関連付け」の各ステップに従い、取り込みドメインとストリーミングドメインが設定済みであること。
アップストリーミングドメインとストリーミングドメインの HTTPS 証明書の設定
このトピックでは、ブラウザベースのデモを使用してアップストリーミングと再生を行います。ブラウザの WebRTC はセキュアな接続を必要とするため、アップストリーミングドメインとストリーミングドメインに HTTPS 証明書を設定する必要があります。HTTPS 証明書の設定方法の詳細については、「HTTPS セキュアアクセラレーションの有効化」をご参照ください。
ネイティブ SDK を使用してアップストリーミングと再生を行う場合、HTTPS 証明書を設定する必要はありません。
RTS の有効化と設定
ApsaraVideo Live コンソールにログインします。
左側のナビゲーションウィンドウで、ライブストリーム + > RTS を選択します。
ストリーミングドメインを選択します。
RTS スイッチをオンにし、半秒遅延 (エンドツーエンドの遅延は 200 ms ~ 400 ms) を選択します。

アップストリーミング URL とストリーミング URL の生成
方法 1:コンソールでの URL 生成
RTS を有効にした後、ページ上の URL ジェネレーターに移動し、ライブストリーミング URL の高速生成 をクリックします。次に、AppName と StreamName を入力して、Alibaba Real-Time Communication (ARTC) ベースの RTS アップストリーミング URL とストリーミング URL を生成します。

方法 2:URL の手動作成
アップストリーミング URL とストリーミング URL を手動で作成する場合、ライブストリームがトランスコーディングされるか、URL 署名が有効になっているかを確認する必要があります。また、アップストリーミングドメイン、ストリーミングドメイン、AppName、StreamName、トランスコーディングテンプレート ID (該当する場合)、およびアクセストークン (該当する場合) も必要です。次の表に URL の作成ルールを示します。
アドレスクラス | アドレスフォーマット | 作成ルール |
アップストリーミング URL | RTMP、RTS、SRT プロトコルがサポートされています。アップストリーミングには RTMP URL を使用します。例: RTMP: 説明 RTS は RTS フォーマットのアドレスでのストリームフェッチングをサポートしています。 | アップストリーミングドメイン + AppName + StreamName + アクセストークン |
ストリーミング URL | RTMP、FLV、M3U8、RTS プロトコルがサポートされています。再生には RTS URL を使用します。例: RTS: | ストリーミングドメイン + AppName + StreamName + アクセストークン |
トランスコーディングされたストリームの URL 説明 トランスコーディングされたストリームの URL は、トランスコーディングテンプレートを設定した場合にのみ生成されます。トランスコーディングされたストリームを使用する場合、ストリーミング URL はトランスコーディングされたストリームの URL フォーマットで作成する必要があります。 | RTMP、FLV、M3U8、RTS プロトコルがサポートされています。再生には RTS URL を使用します。例: RTS: | ストリーミングドメイン + AppName + StreamName_トランスコーディングテンプレート ID + アクセストークン |
関連付けられたアップストリーミングドメインとストリーミングドメインの場合、両方の AppName と StreamName が同じであれば、アップストリーミングと再生を開始できます。
トランスコーディングされたストリームの URL は、トランスコーディングテンプレートを設定した後にのみ生成されます。トランスコーディングテンプレート ID はコンソールで確認できます。詳細については、「ライブストリームのトランスコーディング」をご参照ください。
アクセストークン (auth_key) は、署名アルゴリズムによって生成される暗号化された文字列です。これには URL 署名機能を有効にする必要があります。MD5 アルゴリズムを使用してアクセストークンを計算できます。詳細については、「署名付き URL のコンポーネント」をご参照ください。
URL を手動で作成する場合、{transcoding_template_ID} または {access_token} を実際のデータに置き換えてください。波括弧 {} は含めないでください。
ストリーマー側からの RTS ストリームのアップストリーミング
次のいずれかの Push SDK を統合できます:
RTS Push SDK | リファレンス |
Push SDK for iOS | 説明 Push SDK for iOS は、デフォルトで WebRTC ベースのアップストリーミングをサポートしています。 |
Push SDK for Android | 説明 Push SDK for Android は、デフォルトで WebRTC ベースのアップストリーミングをサポートしています。 |
OBS を使用した WHIP プロトコル経由でのアップストリーミング |
このトピックでは、Web RTS アップストリーミングデモを例として使用します:
RTS Web アップストリーミングデモにアクセスします。
デモで、[Stream Ingest] モードを選択します。
[none] ドロップダウンリストを展開し、[camera] または [screen] (画面共有用) を選択します。
[camera] を選択した場合は、[Mic] ボタンと [Camera] ボタンをクリックして権限を付与します。権限を付与した後、マイクとカメラのドロップダウンリストを展開して、ご利用のデバイスを選択できます。
「アップストリーミング URL とストリーミング URL の生成」の手順で生成した RTS アップストリーミング URL を入力し、[Create Local Stream] をクリックします。
[Start] をクリックしてアップストリーミングを開始します。

視聴者側での RTS ストリームの再生
次のいずれかの Player SDK を統合できます:
RTS Player SDK | リファレンス |
Web Player SDK | |
Player SDK for iOS | |
Player SDK for Android | |
Player SDK for Flutter | |
Player SDK for Windows | 説明 Player SDK for Windows を入手するには、Alibaba Cloud の事業開発担当者に連絡してダウンロードをリクエストしてください。 |
このトピックでは、Web RTS 再生デモを例として使用します:
RTS Web 再生デモにアクセスします。
デモで、[Stream Pulling] モードを選択します。
「アップストリーミング URL とストリーミング URL の生成」の手順で生成した RTS ストリーミング URL を入力します。
[Start] をクリックします。

(オプション) バイパスインジェストの設定
RTS 設定ページで、[半秒の遅延 (エンドツーエンド遅延: 200 ms~400 ms)] を選択します。
[バイパスインジェスト設定] をクリックし、スイッチをオンにしてから、バイパスされた RTMP ストリームを受信する別のアップストリーミングドメインを選択します。
たとえば、バイパスアップストリーミングドメインが push.example.com で、それに関連付けられたストリーミングドメインが pull.example.com の場合です。
RTS の半秒遅延モードは、バイパスアップストリーミングドメインまたはそれに関連付けられたストリーミングドメインでは有効にできません。
内部での再公開には料金はかかりません。

(オプション) バイパスされたストリームのメディア処理サービスの設定
バイパスインジェストを設定した後、関連付けられたストリーミングドメインにメディア処理テンプレートを設定できます。この例では、ストリーミングドメインは pull.example.com です。
ApsaraVideo Live コンソールの左側のナビゲーションウィンドウの 機能管理 で、設定したいサービスを選択します。

(オプション) 標準ライブストリーミングを使用したバイパスされたストリームの再生
バイパスインジェストを設定した後、バイパスアップストリーミングドメインに関連付けられたストリーミングドメインを使用して、RTMP、FLV、HLS などの標準ライブストリーミングプロトコルでオリジナルストリームまたはトランスコーディングされたストリームを再生できます。この例では、ストリーミングドメインは pull.example.com です。標準ライブストリームの再生方法の詳細については、「標準ライブストリーミングの再生」をご参照ください。