Skip to content

概要

P2Pの効果はバッファ時間、ビットレート、エンコード方式、通信事業者、ユーザーの地理的分布、端末デバイスの性能など、様々な要因の影響を受けます。
m3u8(またはmpd)の設定もP2P効果に大きな影響を与えます。適切な設定(各セグメントの長さや各m3u8/mpdに含まれるセグメント数など)により、P2P率を大幅に向上させることができます。マルチビットレートのm3u8/mpdは使用しないことをお勧めします。

ライブ配信モードのm3u8/mpd参考設定

  • セグメント長:3〜4秒
  • 各m3u8/mpdのセグメント数:10個以上

NGINXの例:

rtmp {
    server {
        ...

        application show {
            ...

            hls_fragment 4;                # 4 seconds fragments
            hls_playlist_length 60;        # 60 seconds playlist

        }
    }
}

Http Rangeリクエストを許可する

Http Rangeリクエストは指定範囲のデータをダウンロードするために使用され、一部のデータをすでにP2Pでダウンロード済みの場合に、残りの部分をhttpダウンロードで補うことができます。ピアからのP2Pダウンロード速度が遅い場合、タイムアウト時間に達した時点で残りのデータをhttp rangeリクエストによるダウンロードに任せることができ、データ全体を最初からダウンロードし直す必要がなくなるため、CDNの帯域幅を節約できます。下図はHttp Rangeを使用しない場合と使用する場合の違いを示しています:
http-range
Http Rangeリクエストを有効にするには、オリジンサーバーとCDNの両方でOPTIONSリクエストとRANGEリクエストを有効にする必要があります:(ネイティブ側ではOPTIONSを有効にする必要はありません)

OPTIONSリクエスト

OPTIONSリクエストは、クロスオリジンの場合にブラウザがRangeリクエストを発行する前に送信するプリフライトリクエストです。通常はサーバー側でHttpヘッダーに以下のレスポンスを含めるよう設定するだけで済みます:(AndroidとiOSでは設定不要です)

Access-Control-Allow-Methods: GET, OPTIONS

RANGEリクエスト

RANGEリクエストを有効にするには、通常はサーバー側でHttpヘッダーに以下のレスポンスを含めるよう設定するだけで済みます:

Access-Control-Allow-Headers: Range
Access-Control-Expose-Headers: Content-Length, Content-Range

NGINXの例

add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
add_header 'Access-Control-Allow-Headers' 'Range';
add_header 'Access-Control-Allow-Origin' '*';
add_header Accept-Ranges bytes;
# allow CORS preflight requests
if ($request_method = 'OPTIONS') {
    add_header 'Access-Control-Allow-Headers' 'Range';
    add_header 'Access-Control-Max-Age' 1728000;
    add_header 'Content-Type' 'text/plain charset=UTF-8';
    add_header 'Content-Length' 0;
    return 204;
}

Web SDK設定の推奨事項

Android SDK設定の推奨事項

スーパーノードのデプロイ

こちらを参照してください

粤ICP备18075581号