すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo Live:ライブストリーミングの遅延が大きい場合の一般的な原因と解決策

最終更新日:Feb 22, 2025

このトピックでは、リアルタイムストリーミング(RTS)を使用する場合のストリーミング遅延が大きい場合の一般的な原因と解決策について説明します。

一般的な原因

ライブストリーミングステージ

原因

アップストリーミング

  • ソースストリームのキーフレーム間隔が大きすぎるか、ソースストリームにBフレームが含まれています。

  • ビデオキャプチャデバイスの CPU が過負荷になっています。

  • Push SDK for Native が使用されていますが、SDK の設定が最適ではありません。

ネットワーク伝送

  • アップストリーミング側のネットワーク状態が良くありません。

  • 再生側のネットワーク状態が良くありません。

  • Alibaba Cloud のポイントオブプレゼンス(POP)または内部接続のネットワーク状態が良くありません。

トランスコード中

  • トランスコードによって、ライブストリームの遅延が 300 ~ 500 ミリ秒増加する可能性があります。

  • トリガーされたトランスコードによって、遅延がさらに発生します。

再生

  • ApsaraVideo Player SDK for Native が使用されていますが、SDK の設定が最適ではありません。

  • ApsaraVideo Player SDK for Web を使用して、音声のみまたはビデオのみのストリームを再生しています。

説明

ソースストリームにビデオまたは音声のみが含まれている場合、ApsaraVideo Live はデフォルトで 5 秒間待機して、完全な音声データとビデオデータを取得します。これにより、5 秒間黒い画面が表示されます。

アップストリーミング

OBS Studio の推奨設定

次の図は、アップストリーミングツール OBS Studio の推奨パラメータ設定を示しています。

image.png

vMix の推奨設定

次の図は、アップストリーミングツール vMix の推奨パラメータ設定を示しています。

image.png

Push SDK の最適な設定

Push SDK では、Group of Pictures(GOP)サイズを 1 に設定し、その他のパラメータはデフォルト設定のままにします。

Push SDK for Android

mAlivcLivePushConfig = new AlivcLivePushConfig();
mAlivcLivePushConfig.setVideoEncodeGop(AlivcVideoEncodeGopEnum.GOP_ONE);

Push SDK for iOS

AlivcLivePushConfig *pushConfig = [[AlivcLivePushConfig alloc] init];
pushConfig.videoEncodeGop = AlivcLivePushVideoEncodeGOP_1;

Push SDK for Web

Push SDK for Web では、デフォルト設定が最適です。

アップストリーミングのネットワーク環境を確認する

アップストリーミング側のネットワーク状態が良好であることを確認してください。ストリーミングの遅延が大きい原因がネットワークの問題であるかどうかわからない場合は、ネットワークを切り替えて、同じデバイスを使用してストリームを再度アップストリーミングすることをお勧めします。遅延が正常に戻った場合は、以前のネットワークに問題がある可能性があります。

アップストリーミングデバイスの負荷を確認する

アップストリーミングデバイスが過負荷になっている場合、たとえば、CPU またはメモリ使用率が高すぎる場合は、ビデオキャプチャとエンコード/デコードの効率に影響し、遅延が大きくなります。アップストリーミングデバイスが過負荷になっていることが確実な場合は、デバイスをタイムリーに交換してください。確実でない場合は、同じネットワーク環境とアップストリーミング構成を維持し、別のデバイスを使用して検証することをお勧めします。

再生

Native ApsaraVideo Player SDK の最適な設定

RTS は、Web Real-Time Communication(WebRTC)を使用してストリームを再生します。これにより、再生側のパケット損失とジッターに対する耐性が向上します。プレーヤーのバッファ制御をさらに最適化して、遅延を短縮できます。

説明

ApsaraVideo Player SDK V5.5.6.0 以降を使用している場合、または ApsaraVideo Player のデモを使用している場合は、最適な設定がすでに適用されているため、追加の調整は必要ありません。

上記の構成を完了した後もストリーミングの遅延が短縮されない場合は、RTS SDK でさらに分析を実行します。

  • ストリーミングの遅延を分析する:ApsaraVideo Player SDK for Android または ApsaraVideo Player SDK for iOS のログを有効にし、code=154 ログでエンドツーエンドの遅延をクエリします。遅延はミリ秒単位で測定されます。次のフィールドに注意してください。

    • gd(globalDelayMS):エンドツーエンドの遅延。

    • td(transDelayMS):アップストリーミングの遅延と CDN 伝送遅延の合計。値が 800 ミリ秒を超える場合は、アップストリーミングの遅延または CDN 伝送遅延が大きすぎます。

    • nd(network delay):CDN POP からプレーヤーへのネットワーク遅延。値が 800 ミリ秒を超える場合は、ネットワークの問題が発生している可能性があります。

    • jd(jitterDelayMS):デジッターバッファ遅延。値が 800 ミリ秒を超える場合は、ネットワークの問題が発生している可能性があります。

    • ud:ユーザーバッファの長さ。ほとんどの場合、値は 0 です。このフィールドは無視できます。

    • dd(decoder delay):プレーヤーからのデコード遅延。値が 800 ミリ秒を超える場合は、プレーヤーにデコードの問題が発生している可能性があります。

    • rd(render delay):プレーヤーからのレンダリング遅延。値が 800 ミリ秒を超える場合は、プレーヤーにレンダリングの問題が発生している可能性があります。

    • ut:このフィールドは無視できます。

  • 最初のフレームの遅延を分析する:SDK の code=161 ログで次のキーワードをクエリします。

    st:0,init:1,sdns:0,rdns:2,sc:0,ced:12,sub:5,frsp:309,si:8,fp:13,ffc:5,ffo:416,sum:763

    sum の値が最初のフレームの遅延と大きく異なる場合は、プレーヤーにデコードとレンダリングの問題があります。sum の値が最初のフレームの遅延と等しいか近い場合は、すべてのフィールドの値を分析します。ced、frsp、および ffc の値が通常よりも大きい場合は、ネットワークの問題が発生しています。

ApsaraVideo Player SDK for Web の最適な設定

RTS ベースのストリーミングに ApsaraVideo Player SDK を使用する場合、バッファはブラウザのデフォルトポリシーによって制御されます。追加の構成は必要ありません。ストリーミングの遅延または最初のフレームの遅延が大きい場合は、Google Chrome を使用して chrome://webrtc-internals にアクセスし、WebRTC データが異常かどうかを確認できます。

image.png

次のメトリックに注意してください。

  • inbound-rtp(kind=audio)および inbound-rtp(kind=video):それぞれリアルタイムデータの受信ステータスとフレームのデコードステータス。framesDropped の値が大きい場合、または framesDecoded/s の値が想定されるビットレートと異なる場合は、デコードの問題が発生しています。アップストリーミングまたはトランスコードステージのトラブルシューティングを行ってください。

  • candidate-pair:接続ステータス。currentRoundTripTime の値が大きい場合、または inbound-rtp の packetsLost の値が大きい場合は、ネットワークの問題が発生している可能性があります。

音声のみまたはビデオのみのストリームを再生するときに発生する遅延

デフォルトでは、Alibaba Cloud は音声のみまたはビデオのみのストリームを再生するときに、完全な音声データとビデオデータを取得するために 5 秒間待機します。その結果、5 秒間の黒い画面が表示されます。ストリーミング URL の末尾に @subvideo=no または @subaudio=no を追加することで、ビデオまたは音声のサブスクライブを手動で解除できます。

  • ソースストリームがビデオのみのストリームで、ストリーミング URL が artc://example.aliyundoc.com/app/stream?auth_key={アクセストークン} である場合は、ストリーミング URL を artc://example.aliyundoc.com/app/stream?auth_key={アクセストークン}@subaudio=no に変更します。

  • ソースストリームが音声のみのストリームで、ストリーミング URL が artc://example.aliyundoc.com/app/stream?auth_key={アクセストークン} である場合は、ストリーミング URL を artc://example.aliyundoc.com/app/stream?auth_key={アクセストークン}@subvideo=no に変更します。

再生のネットワーク環境を確認する

ストリームを再生するときは、再生側のネットワーク状態が良好であることを確認してください。ネットワークが不安定な場合、ApsaraVideo Player SDK はスムーズな再生を実現するためにローカルバッファのサイズを自動的に増やします。その結果、遅延が増加します。

トランスコード

ライブストリーミング中にトランスコードが実行されると、ストリーミングの遅延が 300 ~ 500 ミリ秒増加する可能性があります。RTS は次のタイプのトランスコードを提供します。

  • HTML5 自動トランスコード:このタイプのトランスコードは、アップストリーミングされた RTMP ストリームが Web ページで再生されるときに使用されます。自動トランスコードによる遅延は避けられません。ただし、比較的低いため、ストリーミング全体の遅延には大きな影響を与えません。

  • カスタムトランスコード:ライブストリームに複数の仕様のトランスコーディングテンプレートを構成した場合、トランスコードされたストリームを再生するときに、最大 2 つの部分から遅延が発生します。

    • トランスコード処理による遅延:この部分の遅延は 300 ~ 500 ミリ秒と推定され、避けられません。

    • トランスコードの開始による遅延:トランスコーディングテンプレートで [トリガーされたトランスコード] が有効になっている場合、トランスコードはユーザーが初めてストリームをプルしたときにのみ開始されます。これにより、初めてストリームをプルするユーザーに追加の遅延が発生します。この部分の遅延は 200 ミリ秒と推定されます。

      説明

      トリガーされたトランスコードは、トランスコーディングテンプレートの作成時に構成できるオプションの機能です。ストリームのトリガーされたトランスコードを無効にするには、トリガーされたトランスコードが無効になっている新しいトランスコーディングテンプレートを作成する必要があります。次に、ストリームを再度アップストリーミングし、ストリーミングの遅延を再度テストします。

お問い合わせ

上記のトラブルシューティング手順を実行した後も遅延が短縮されない場合は、チケットを送信 してください。コミュニケーションの効率を向上させるために、チケットに次の情報を追加してください。

  • テストに使用したアップストリーミング URL とストリーミング URL。

  • アップストリーミングツールと再生ツール。例:アップストリーミングには OBS Studio、再生には ApsaraVideo Player SDK for Web。

  • 上記のトラブルシューティング手順で説明されているその他の役立つ情報。