ライブ配信遅延は、アップストリーミングクライアント、サーバー、再生クライアントで蓄積されます。遅延が発生する段階を特定し、それを削減するための設定を適用してください。
ライブ配信遅延の原因
アップストリーミングクライアントについて
Group of Pictures (GOP) は、ビデオエンコーディングとデコーディングの基本単位であり、キーフレームから始まります。ライブ配信では、各フレームにタイムスタンプを追加してネットワーク経由で送信します。GOP サイズが大きいと、再生クライアントは再生を開始する前により多くのデータをバッファリングする必要があるため、再生開始が遅れます。
コマ落ちを解決するために、ほとんどのサードパーティ製アップストリーミングソフトウェアはエンコーディングバッファーを増やします。しかし、エンコーディングバッファーが大きすぎると遅延が増加します。
ハードウェアの制限により、エンコーダーが必須のビットレート、フレームレート、およびエンコードプロファイルの設定を満たせないことがあります。このエンコード遅延が、エンドツーエンドレイテンシを増加させます。
アップストリーミングクライアントの設定
サーバー側
再生が開始される前に、ライブストリームデータの一部がキャッシュされ、迅速な起動とコマ落ちの削減が保証されます。キャッシュはデータのスムーズな流れを維持しますが、キャッシュされたデータは遅延を増加させます。再生中にネットワークジッターが発生すると、データがクライアントに到達できなくなり、2〜3 秒の遅延が追加されることがあります。
サーバー側のキャッシュを削減するには、「サーバー側の遅延レベルの設定」をご参照ください。
再生クライアント側
早送りをサポートしていないほとんどの再生クライアントは、受信バッファーがいっぱいになった後にのみライブストリームのデコーディングを開始します。再生クライアントは、再生を開始する前にこの受信バッファーを埋める必要があります。
ライブ配信遅延の削減
以下の設定により、遅延が蓄積される 3 つの段階 (アップストリーミングクライアント、ストリーミングプロトコル、サーバー側) で遅延を削減できます。ご利用の再生クライアントが HLS を使用している場合、HLS は HTTP-FLV や RTMP よりも遅延が大きいため、ストリーミングプロトコルから始めることを推奨します。そうでない場合は、まずアップストリーミングクライアントを設定し、次にサーバー側のキャッシュを削減してください。ミリ秒レベルの遅延が必要な場合は、「リアルタイムストリーミング (RTS)」をご参照ください。
アップストリーミングクライアントの設定
GOP サイズ:GOP サイズ (キーフレーム間隔) を 1〜2 秒に設定して、プレーヤーが GOP データの読み込みに費やす時間を短縮し、遅延を低減します。コンソールで GOP サイズを設定する方法については、「カスタムトランスコーディング」をご参照ください。API オペレーションを使用して GOP サイズを設定する方法については、「AddCustomLiveStreamTranscode」をご参照ください。
エンコーディングバッファー:エンコーディングバッファーが大きすぎることが遅延の原因である場合は、Alibaba Cloud プッシュ SDK を使用して遅延を削減します。
エンコーディングモード:iOS のアップストリーミングデバイスでは、効率的で電力を節約できるハードウェアエンコーディングを使用します。Android では、デバイスモデルと CPU の種類が多岐にわたるため、ハードウェアエンコーディングは互換性の問題を引き起こす可能性があります。そのため、Android でのアップストリーミングにはソフトウェアエンコーディングを使用します。
ストリーミングプロトコルの選択
ApsaraVideo Live は、HTTP-FLV、HLS、RTMP の 3 つのストリーミングプロトコルをサポートしています。いずれかを選択する前に、以下の再生に関する制約を考慮してください。
プレーヤーへの依存関係:HTTP-FLV と RTMP は Flash プレーヤーが必要です。HLS は、ほとんどの最新の Web ブラウザーでネイティブにサポートされています。
モバイルブラウザー:モバイルブラウザーでライブ配信を視聴するには、HLS プロトコルのみを使用できます。
遅延と互換性:HTTP-FLV と RTMP は遅延が少なく、低遅延再生が求められるシナリオに適しています。HLS は遅延が大きいものの互換性に優れており、遅延には敏感ではないが、より多くのデバイスでの再生が求められるシナリオに適しています。
以下の表は、HTTP-FLV、HLS、RTMP プロトコルの比較です。
| プロトコル | 説明 | トランスポートプロトコル | コンテナフォーマット | ユースケース |
| HTTP-FLV | Adobe によって開発されました。ストリーミングデータを FLV 形式でカプセル化し、HTTP 経由でクライアントに送信します。遅延は約 2 秒です。HTTPS 経由の暗号化伝送と Android モバイルデバイスでの再生をサポートしています。 | HTTP | FLV、TAG | 低遅延ストリーミング |
| HLS | Apple によって開発されました。HTTP ベースのストリーミングプロトコルです。ストリーミングデータを連続した TS セグメントに分割します。各セグメントは 5 秒以上で、セグメント数は通常 3〜4 です。そのため、合計遅延は約 10〜30 秒になりますが、再生はスムーズです。主に iOS デバイスで使用され、ライブの音声・映像ストリーミングや録画コンテンツなどのサービスを提供します。 | HTTP | M3U8、TS | クロスプラットフォーム互換性 |
| RTMP | Adobe によって開発されました。伝送中にメッセージはより小さなチャンクに分割され、チャンクは TCP 経由で送信され、受信側でチャンクが再構成されてストリーミングデータになります。この複雑さにより、ストリームが不安定になることがあります。iOS では、再生にサードパーティのデコーダーが必要です。 | TCP | FLV、TAG | インタラクティブライブストリーミング |
ご利用の再生クライアントが HLS プロトコルを使用している場合、上記の表に記載されている遅延は想定内です。これを削減するには、サーバー側の設定を調整してください。より低い遅延を実現するには、HLS プロトコルから FLV プロトコルに切り替えてください。
サーバー側の遅延レベルの設定
サーバー側のキャッシュを削減して、ライブ配信の遅延を低減します。ApsaraVideo Live コンソールでは、各ストリーミングプロトコルの遅延を設定できます。遅延設定が低いほど、サーバー側のキャッシュは小さくなります。
ApsaraVideo Live コンソールにログインします。
左側のナビゲーションウィンドウで、アップストリームミングまたはストリーミングのドメイン名管理 をクリックしてドメイン管理 ページに移動します。
設定するストリーミングドメインを見つけ、[操作] 列の ドメイン設定 をクリックします。
をクリックします。
ページには、RTMP 遅延、FLV 遅延、HLS 遅延 という 3 つのプロトコルに対する遅延レベル設定が表示されます。[設定の変更] をクリックして設定を調整します。実際の遅延は、設定した遅延レベルとアップストリームの GOP サイズの両方に依存するため、GOP サイズは 1〜2 秒に維持してください。
キャッシュを削減すると、ネットワークが不安定な場合にデータが時間内にダウンロードできなくなり、ライブストリームでコマ落ちが発生します。コマ落ちが発生した場合は、もう一度[設定の変更]をクリックして、以前の遅延レベルに元に戻してください。詳細については、「遅延設定」をご参照ください。
リアルタイムストリーミング (RTS)
上記の設定で、従来のライブ配信で一般的な 3〜6 秒未満に遅延を短縮できない場合は、リアルタイムストリーミング (RTS) を使用してください。RTS は、数千万の同時視聴者がいるシナリオでミリ秒レベルのライブ配信遅延を提供します。大規模なインタラクティブストリーミングシナリオに適しており、低コマ落ち率と高速な起動を実現します。
RTS の課金:RTS の課金は、標準のライブ配信とは異なります。課金ルールについては、「Alibaba Cloud 料金ページ」をご参照ください。
RTS サービスのアクティベーション:RTS サービスのアクティベーション方法と使用方法については、「RTS の概要」をご参照ください。