このトピックでは、ライブストリーミングの高遅延の原因と、その問題を解決する方法について説明します。
ライブストリーミングの遅延の原因
アップストリームクライアント
Group of Pictures (GOP) は、キーフレームで始まるフレームのコレクションです。GOP は、ビデオエンコーダーとビデオデコーダーの基本単位です。ライブストリーム中、各フレームにはタイムスタンプが付与され、ネットワーク経由で送信されます。GOP サイズが大きいと、ライブストリーミングの遅延が発生する可能性があります。
多くのサードパーティ製のアップストリームアプリケーションは、カクつきを防ぐためにエンコーディングバッファーのサイズを大きくします。しかし、エンコーディングバッファーが大きいと、ライブストリーミングの遅延が発生する可能性があります。
ハードウェアの制限により、エンコーダーがビットレート、フレームレート、および高度なプロファイルエンコーディング設定の要件を満たせない場合があります。これにより、エンコーディング遅延が発生し、ライブストリームに影響を与えます。
サーバーサイド
再生が始まる前に、一部のライブストリームデータがキャッシュされ、高速な起動とカクつきの削減が保証されます。このキャッシュはスムーズなデータ伝送に役立ちますが、ライブストリーミングの遅延も引き起こします。再生中にネットワークジッターが発生すると、データがクライアントに到達できなくなり、2〜3 秒の遅延が発生する可能性があります。
再生クライアント
早送りをサポートしていないほとんどの再生クライアントは、受信バッファーがいっぱいになってからライブストリームのデコードを開始します。このバッファーを埋めるのに必要な時間が、ライブストリーミングの遅延を引き起こします。
ライブストリーミングの遅延を削減する方法
以下の設定を構成することで、ライブストリーミングの遅延を削減できます。
アップストリームクライアントの設定
GOP サイズを 1 秒または 2 秒に設定します。これにより、プレーヤーが GOP を読み込むのに必要な時間が短縮され、ライブストリーミングの遅延が削減されます。コンソールで GOP サイズを設定するには、「カスタムトランスコーディング」をご参照ください。API 操作を使用して設定するには、「AddCustomLiveStreamTranscode」をご参照ください。
大きなエンコーディングバッファーが高遅延の原因となっている場合は、Alibaba Cloud Push SDK を使用して削減できます。
アップストリームデバイスについては、iOS クライアントでは効率が高く消費電力が少ないハードウェアエンコーディングを使用します。Android クライアントでは、ソフトウェアエンコーディングを使用します。Android のハードウェアエンコーディングは、デバイスモデルや CPU タイプが多様であるため、互換性の問題を引き起こす可能性があります。
適切なストリーミングプロトコルの選択
ApsaraVideo Live は、HTTP-FLV、HTTP Live Streaming (HLS)、RTMP の 3 つの再生プロトコルを提供します。ストリーミングシナリオに基づいてプロトコルを選択できます。
HTTP-FLV と RTMP は遅延が少なく、低遅延再生シナリオに適しています。HLS は遅延が大きいですが、互換性に優れています。遅延の影響を受けにくいが、より広範なデバイスでの再生が必要なシナリオに適しています。
HTTP-FLV と RTMP には Flash プレーヤーが必要です。HLS はブラウザで直接再生できます。
モバイルブラウザでライブストリームを視聴するには、HLS プロトコルを使用する必要があります。
説明再生クライアントが HLS プロトコルを使用している場合、10〜30 秒の遅延は正常です。遅延が大きすぎる場合は、サーバー設定を調整できます。さらに低い遅延を実現するには、HLS プロトコルから FLV プロトコルに切り替えることができます。
次の表に、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 では、再生にサードパーティのデコーダーが必要です。
HTTP
FLV、TAG
インタラクティブストリーミング
サーバーの設定
サーバーサイドのキャッシュサイズを小さくすることで、ライブストリーミングの遅延を減らすことができます。コンソールでライブストリーミングの遅延を設定できます。遅延設定はストリーミングプロトコルによって異なります。遅延設定が低いほど、サーバーサイドのキャッシュは小さくなります。
ApsaraVideo Live コンソールにログインします。
左側のナビゲーションウィンドウで、アップストリームミングまたはストリーミングのドメイン名管理 をクリックして ドメイン管理 ページに移動します。
設定するストリーミングドメインの [操作] 列にある ドメイン設定 をクリックします。
をクリックします。
説明キャッシュサイズを小さくすると、ネットワーク接続が不安定な場合にデータが適時にダウンロードされず、再生が途切れる原因となることがあります。詳細については、「遅延設定」をご参照ください。
リアルタイムストリーミング (RTS)
上記の方法で高遅延の問題が解決しない場合は、リアルタイムストリーミング (RTS) を使用できます。RTS は、数千万の同時視聴者を持つライブストリーミングに対してミリ秒レベルの遅延を提供し、大規模なインタラクティブストリーミングシナリオに適しています。RTS は、従来のライブストリーミングの 3〜6 秒の遅延を克服し、超低遅延、低カクつき、高速な起動体験を保証します。
RTS の費用
RTS の料金は、標準のライブストリーミングとは異なります。課金ルールの詳細については、「Alibaba Cloud 料金ページ」をご参照ください。
RTS サービスの有効化
RTS サービスの有効化と使用方法の詳細については、「RTS の概要」をご参照ください。