このトピックでは、ライブストリーミングの遅延を減らす方法について説明します。
ライブストリーミングの遅延につながる原因
ストリームingest
グループ・オブ・ピクチャ (GOP) は、ビデオ・ストリーム内のキーフレームの集合であり、ビデオ符号化および復号化の基本単位です。 ライブストリーミングの間、データの各フレームはタイムスタンプされ、ネットワークを介して送信されます。 ビデオストリーム内のキーフレームの数が多いと、ライブストリーミングの遅延が発生します。
ほとんどのサードパーティのストリーム取り込みソフトウェアは、再生の吃音を防ぐためにエンコーディングキャッシュサイズを増やします。 ただし、キャッシュサイズが大きいと、ライブストリーミングの待ち時間が発生します。
エンコードハードウェアは、指定されたビットレート、フレームレート、またはエンコードプロファイルの要件を満たすことができません。 これは、符号化待ち時間を引き起こし、スムーズなストリーミングを妨げます。
サーバー
ライブストリームの配信の前に、サーバは、特定の量のストリーミングデータをキャッシュして、ライブストリームを即座にロードし、吃音を低減することができます。 これにより、ライブストリーミングのスムーズさが保証されます。 ただし、データをキャッシュすると、ライブストリーミングの待ち時間がある程度発生します。 ライブストリームの配信中、データは、ネットワークジッタのためにリアルタイムでクライアントに送信されないことがあります。 これはまた、2〜3秒の待ち時間を引き起こします。
ストリーミング
早送りをサポートしていないほとんどのストリーミングクライアントは、キャッシュがいっぱいのときにのみライブストリームをデコードして再生します。 キャッシュ処理により、ライブストリーミングの待ち時間が発生します。
ライブストリーミングの遅延を減らす
次の方法を使用して、ライブストリーミングの待ち時間を短縮できます。
ストリーム取り込み設定
プレーヤーがGOPをロードするのに必要な時間を短縮するために、GOPサイズを1〜2秒に設定します。 これにより、ライブストリーミングの待ち時間が短縮されます。 ApsaraVideo Liveコンソールを使用してGOPサイズを設定する方法の詳細については、「カスタムトランスコーディングの設定」をご参照ください。 API操作を呼び出してGOPサイズを設定する方法の詳細については、「AddCustomLiveStreamTranscode」をご参照ください。
大きなエンコーディングキャッシュサイズに起因するライブストリーミングの待ち時間を短縮するために、Alibaba Cloud Push SDKの使用を推奨します。
ストリームの取り込みに使用されるiOSデバイスでは、効率的で省電力であるため、ハードウェアエンコードを使用することをお勧めします。 ストリーム取り込みに使用されるAndroidデバイスのパフォーマンスは、デバイスタイプとCPUタイプによって異なり、ハードウェアコーディングは互換性の問題を引き起こす可能性があります。 したがって、Androidデバイスでソフトウェアエンコーディングを使用することをお勧めします。
サーバー構成
キャッシュサイズを小さくして、ライブストリーミングの遅延を減らします。 これを行うには、ApsaraVideo Liveコンソールで異なるストリーミングプロトコルの低レイテンシレベルを指定します。
ApsaraVideo Live コンソールにログインします。
左側のナビゲーションペインで、[ドメイン名] をクリックします。 ドメイン管理 ページが表示されます。
設定するストリーミングドメインを見つけて、[操作] 列の ドメイン設定 をクリックします。
左側のナビゲーションツリーで、
を選択します。
説明キャッシュサイズが減少した後、ネットワーク接続が不安定な場合、データをタイムリーにダウンロードできない場合があります。 この場合、ライブストリーミング中に吃音が発生します。
ストリーミングプロトコル
ApsaraVideo Liveは、HTTP Flash Video (HTTP-FLV) 、HTTP Live streaming (HLS) 、およびReal-Time Messaging Protocol (RTMP) のストリーミングプロトコルをサポートしています。 ライブストリーミングシナリオに基づいて適切なプロトコルを選択できます。
HTTP-FLVとRTMPはレイテンシが低く、低レイテンシが必要なライブストリーミングシナリオに適しています。 HLSは、比較的高いレイテンシを有するが、広範囲のデバイスと互換性がある。 これは、レイテンシに敏感ではなく、多数のデバイスがライブストリームを再生しているライブストリーミングシナリオに適しています。
HTTP-FLVおよびRTMPストリームにはFlash Playerが必要ですが、HLSストリームはブラウザで直接再生できます。
ユーザーがモバイルブラウザーでライブストリームを再生する場合は、HLSを使用する必要があります。
説明ストリーミングクライアントがHLSを使用している場合、10〜30秒のレイテンシが正常です。 レイテンシを短縮するために、HLSをHTTP-FLVに変更できます。
次の表は、HTTP-FLV、HLS、およびRTMPの違いを示しています。
ストリーミングプロトコル
説明
伝送プロトコル
コンテナー形式
該当するライブストリーミングシナリオ
HTTP-FLV
アドビが導入したHTTP-FLVは、ストリーミングデータをFLV形式にカプセル化し、HTTPプロトコルを使用してクライアントにデータを送信します。 レイテンシは約2秒です。 HTTP-FLVは、HTTPSを使用した暗号化送信をサポートしています。 HTTP-FLVは、AndroidデバイスとiOSデバイスの両方でサポートされます。
HTTP
FLVとタグ
レイテンシを短縮したライブストリーミング
HLS
Appleによって導入されたHLSは、HTTPに基づくメディアストリーミングプロトコルです。 HLSは、ライブストリームを連続するTSセグメントに分割する。 各セグメントの長さは5秒以上です。 通常、3〜4セグメントがキャッシュされた後に再生が開始されます。 したがって、HLSライブストリーミングは、スムーズな再生を維持しながら、約10〜30秒の総レイテンシを有する。 HLSプロトコルはiOSデバイスに適用され、オーディオやビデオのストリーミングや録画などのサービスを提供するために使用されます。
HTTP
M3U8およびTS
複数のデバイス間でのライブストリーミング
RTMP
アドビによって導入されたRTMPは、送信中にメッセージを小さなチャンクに分割します。 RTMPは、TCP (Transmission Control Protocol) を使用してチャンクを受信機に送信する。 そして、受信機は、チャンクを復号してストリーミングデータを得る。 大きなファイルの分割は複雑であり、不安定性につながる可能性があります。 iOSの場合、RTMPストリームを再生するにはサードパーティのデコーダが必要です。
HTTP
FLVとタグ
インタラクティブストリーミング
リアルタイムストリーミング (RTS)
上記の対策を講じた後もレイテンシに満足できない場合は、リアルタイムストリーミング (RTS) を使用できます。 3〜6秒のレイテンシを有する従来のライブストリーミングと比較して、RTSは、ミリ秒のレイテンシで数千万の同時再生をサポートする。 RTSは、大規模なインタラクティブストリーミングイベントに適しています。 RTSを使用すると、低レイテンシ、吃音のない、インスタントロードを特徴とするライブストリーミング体験を提供できます。
RTS料金
RTSの価格は、標準ストリーミングの価格とは異なります。 詳細については、 「ApsaraVideo Liveの料金ページ」をご参照ください。
RTSを有効にする
RTSの有効化と使用方法については、「概要」をご参照ください。