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

ApsaraVideo Live:ライブストリームのカプセル化

最終更新日:Aug 23, 2025

ApsaraVideo Live は、さまざまなストリーミングプロトコルでの低遅延再生をサポートするために、ライブストリームカプセル化機能を提供します。

サポートされているコンテナフォーマット

ApsaraVideo Live は、リアルタイムメッセージングプロトコル (RTMP)、HTTP-FLV、HTTP Live Streaming (HLS) などのさまざまなストリーミングプロトコルをサポートしています。

遅延を短縮し、複数の再生デバイスとの互換性を向上させるために、ライブストリームカプセル化は、視聴者にプッシュする前に、クラウド内の元のストリームを異なるコンテナフォーマットに変換します。

次の表に、サポートされているコンテナフォーマットと、各フォーマットがサポートするストリーミングプロトコルとコーデックを示します。

コンテナフォーマット

サポートされているストリーミングプロトコル

サポートされているコーデック

TS

  • 低遅延 HLS (LL-HLS)

  • オーディオ: AAC、OPUS、AC3、EAC3、および MP3

  • ビデオ: H.264 および H.265

CMAF

  • LL-HLS

  • HLS

  • DASH

  • HLS & DASH

  • オーディオ: AAC

  • ビデオ: H.264 および H.265

仕組み

ライブストリームカプセル化は、ストリームを TS または CMAF 形式のセグメントに分割し、HLS、LL-HLS、または DASH などのプロトコルを介して配信します。 システムはマニフェストファイルを生成し、セグメントの URL を順番に記録します。 クライアントがライブストリームをリクエストすると、サーバーは最新のセグメントを含む最新のマニフェストを返します。

この機能は、ライブストリームトランスコーディング (マルチビットレートトランスコーディング対応) および タイムシフト と組み合わせて、より良いストリーミングエクスペリエンスを提供できます。

シナリオ

  • 低遅延ライブストリーミングを実装する

    ApsaraVideo Live は HLS ストリーミング URL を提供します。 HLS での低遅延ビデオストリーミングを有効にするには、カプセル化機能を使用して、LL-HLS での再生用にストリームを変換します。

    標準の HLS と比較して、LL-HLS はストリームをより小さな 部分セグメント (200 ミリ秒から 1 秒の期間) に分割し、プレイリストの再読み込みをブロックするため、エンドツーエンドの遅延が 3 ~ 5 秒に短縮されます。

  • 複数のデバイスとブラウザとの互換性を強化する

    デフォルトでは、ApsaraVideo Live は TS コンテナフォーマットを使用して HLS プロトコルでライブストリームを配信します。 ただし、このフォーマットは一部のデバイスやブラウザと互換性がありません。 この場合、カプセル化機能を使用してコンテンツを CMAF 形式にパッケージ化します。CMAF 形式は、H.265 などの幅広いデバイス、プラットフォーム、コーデックをサポートしています。

始める前に

グループ オブ ピクチャ (GOP) サイズ

  • スムーズな再生のために、取り込まれたストリームの GOP サイズが一定であることを確認してください。 トランスコードされたストリームをカプセル化する場合は、その GOP サイズも安定していることを確認してください。

  • カプセル化されたストリームの各セグメントの期間は、GOP サイズの倍数である必要があります。

LL-HLS プロトコル

  • ネットワークの状態が悪いと、スタッタリング率が上がる可能性があります。 ネットワークの状態に基づいてビットレートを自動的に調整するマルチビットレートトランスコーディングでライブストリームカプセル化を使用することをお勧めします。

  • スタッタリングや再生エラーを防ぐために、ライブストリームの GOP サイズを 1 秒または 2 秒に固定してください。

  • ApsaraVideo Player、hls.js、ExoPlayer など、LL-HLS をサポートするプレーヤーを使用してください。

  • メインストリーミングドメイン名は最大 100,000 人の視聴者をサポートできます。 クォータを増やすには、 チケットを送信 してください。

その他

  • ドメイン名にカプセル化構成を初めて追加すると、システムはコンテンツ配信アクセラレーションの関連構成を更新します。 これらの変更が有効になるまで約 3 ~ 5 分かかります。

機能の使用

カプセル化設定の構成

ApsaraVideo Live コンソールまたは API でカプセル化設定を構成します。

説明

進行中のストリームの場合、構成はストリームを再取り込みした後にのみ有効になります。

コンソールで

  1. ApsaraVideo Live コンソール にログオンします。
  2. 左側のナビゲーションウィンドウで、[機能管理] > [カプセル化] をクリックします。

  3. ストリーミングドメイン名を選択し、[追加] をクリックします。

    image

    パラメーター

    説明

    AppName

    • ドメイン名の下にあるすべてのアプリケーションのカプセル化を構成するには、アスタリスク (*) を入力します。

    • 特定のアプリケーション用に構成するには、値はストリームのアップストリーミング URL で指定された AppName と同じである必要があります。

    StreamName

    • アプリケーションの下にあるすべてのストリームのカプセル化を構成するには、アスタリスク (*) を入力します。

    • 特定のストリーム用に構成するには、ストリーム名を入力します。

    プロトコル

    コンテナフォーマットと再生プロトコルを選択します。 有効値:

    • HLS - CMAF

    • LL-HLS - CMAF

    • LL-HLS - TS

    • DASH - CMAF (DASH のみサポート)

    • HLS & DASH - CMAF (HLS および DASH サポート)

    セグメント数

    マニフェストファイルあたりのセグメント数を指定します。 有効値: 3 ~ 5。

    セグメントの長さ (秒)

    • 再生プロトコルが HLS または DASH の場合は、1 ~ 10 の整数を入力します。GOP を 5 秒に設定し、セグメントの長さを固定 GOP の倍数に設定することをお勧めします。

    • 再生プロトコルが LL-HLS の場合は、セグメントの長さを固定 GOP の倍数である 1 秒または 2 秒に設定します。 推奨 GOP は 1 秒です。

    パートの長さ (ミリ秒)

    再生プロトコルが LL-HLS の場合は、HLS 部分セグメントの期間を指定します。 有効値: 200 ~ 1000 ミリ秒。

    セグメントの長さの 3 分の 1 よりわずかに大きい値を指定することをお勧めします。

    トランスコードされたストリーム

    トランスコードされたストリームをカプセル化するかどうかを指定します。

    有効値: ソースストリームのみ および トランスコードされたストリームを含む

    説明

    ストリーミングドメインのライブセンターが中国本土以外 (シンガポール、ドイツ、日本、またはインドネシア) の場合、再生中に大きな遅延が発生する可能性があります。 構成が完了したら、結果が期待どおりであるかどうかをテストして確認してください。

  4. [OK] をクリックします。

API で

AddLivePackageConfig 操作を呼び出して、カプセル化構成を追加します。

サンプルコード

// This file is auto-generated, don't edit it. Thanks.
// このファイルは自動生成されています。編集しないでください。ありがとうございます。
package demo;

import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.core.http.HttpClient;
import com.aliyun.core.http.HttpMethod;
import com.aliyun.core.http.ProxyOptions;
import com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder;
import com.aliyun.sdk.service.live20161101.models.*;
import com.aliyun.sdk.service.live20161101.*;
import com.google.gson.Gson;
import darabonba.core.RequestConfiguration;
import darabonba.core.client.ClientOverrideConfiguration;
import darabonba.core.utils.CommonUtil;
import darabonba.core.TeaPair;

//import javax.net.ssl.KeyManager;
//import javax.net.ssl.X509TrustManager;
import java.net.InetSocketAddress;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.io.*;

public class AddLivePackageConfig {
    public static void main(String[] args) throws Exception {

        // HttpClient Configuration
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // Set the connection timeout time, the default is 10 seconds
                // 接続タイムアウト時間を設定します。デフォルトは10秒です。
                .responseTimeout(Duration.ofSeconds(10)) // Set the response timeout time, the default is 20 seconds
                // 応答タイムアウト時間を設定します。デフォルトは20秒です。
                .maxConnections(128) // Set the connection pool size
                // 接続プールサイズを設定します。
                .maxIdleTimeOut(Duration.ofSeconds(50)) // Set the connection pool timeout, the default is 30 seconds
                // 接続プールのタイムアウトを設定します。デフォルトは30秒です。
                // Configure the proxy
                // プロキシを設定します。
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // If it is an https connection, you need to configure the certificate, or ignore the certificate(.ignoreSSL(true))
                // https接続の場合は、証明書を設定するか、証明書を無視する必要があります(.ignoreSSL(true))
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // Configure Credentials authentication information, including ak, secret, token
        // 認証情報を設定します。ak、secret、tokenを含みます。
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // Please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set.
                // 環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET が設定されていることを確認してください。
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // use STS token
                // // STS トークンを使用します。
                .build());

        // Configure the Client
        // クライアントを設定します。
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // Region ID
                // // リージョンID
                //.httpClient(httpClient) // Use the configured HttpClient, otherwise use the default HttpClient (Apache HttpClient)
                // // 設定済みの HttpClient を使用します。そうでない場合は、デフォルトの HttpClient (Apache HttpClient) を使用します。
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // Service-level configuration
                // // サービスレベルの設定
                // Client-level configuration rewrite, can set Endpoint, Http request parameters, etc.
                // // クライアントレベルの設定の書き換え。エンドポイント、HTTPリクエストパラメータなどを設定できます。
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // Endpoint 请参考 https://api.aliyun.com/product/live
                                  // // エンドポイントは https://api.aliyun.com/product/live を参照してください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // Parameter settings for API request
        // // APIリクエストのパラメータ設定
        AddLivePackageConfigRequest addLivePackageConfigRequest = AddLivePackageConfigRequest.builder()
                .regionId("<Your RegionId>")
                .domainName("<Your DomainName>")
                .appName("<Your AppName>")
                .streamName("<Your StreamName>")
                // Request-level configuration rewrite, can set Http request parameters, etc.
                // // リクエストレベルの設定の書き換え。HTTPリクエストパラメータなどを設定できます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // Asynchronously get the return value of the API request
        // // APIリクエストの戻り値を非同期で取得します。
        CompletableFuture<AddLivePackageConfigResponse> response = client.addLivePackageConfig(addLivePackageConfigRequest);
        // Synchronously get the return value of the API request
        // // APIリクエストの戻り値を同期的に取得します。
        AddLivePackageConfigResponse resp = response.get();
        System.out.println(new Gson().toJson(resp));
        // Asynchronous processing of return values
        // // 戻り値の非同期処理
        /*response.thenAccept(resp -> {
            System.out.println(new Gson().toJson(resp));
        }).exceptionally(throwable -> { // Handling exceptions
            // // 例外処理
            System.out.println(throwable.getMessage());
            return null;
        });*/

        // Finally, close the client
        // // 最後に、クライアントを閉じます。
        client.close();
    }

}
説明
  • <Protocol> の有効値については、AddLivePackageConfig をご参照ください。

  • Java 用サーバー SDK については、Java 用サーバー SDK の使用 をご参照ください。

  • ストリームのカプセル化を構成した後も、元の品質のストリーミング URL からアクセスできます。

カプセル化されたストリームの取り込みと再生

ストリームを取り込む

スムーズな再生のために、取り込まれたストリームの GOP サイズが一定であることを確認してください。

この例では、Open Broadcaster Software (OBS) を使用してストリームを取り込みます。 次の図は、推奨されるパラメータ設定を示しています。

image.png

カプセル化されたストリームを再生する

  1. カプセル化されたストリームのストリーミング URL を取得します。 URL 形式はストリーミングプロトコルによって異なります。

    プロトコル

    URL 形式

    HLS

    http://<DomainName>/<AppName>/<StreamName>.m3u8?aliyunols=on&auth_key=1725503*****

    DASH

    http://<DomainName>/<AppName>/<StreamName>.mpd?aliyunols=on&auth_key=17255038******

    LL-HLS

    http://<DomainName>/<AppName>/<StreamName>-llhls.m3u8?aliyunols=on&auth_key=1725503******
    説明

    aliyunols=on パラメーターは、カプセル化されたストリームのストリーミング URL で必須です。

    ライブ URL ジェネレーター を使用して、ストリーミング URL を生成できます。 構成されているコンテナフォーマットとストリーミングプロトコルに応じて、カプセル化されたストリーム用に生成される URL は異なります。

    コンテナフォーマット

    ストリーミングプロトコル

    URL 形式

    TS

    LL-HLS

    LL-HLS および HLS

    CMAF

    LL-HLS

    LL-HLS および HLS

    HLS

    HLS

    DASH

    DASH

    HLS & DASH

    HLS & DASH

  2. 互換性のあるプレーヤーを使用してストリームを再生します。 ApsaraVideo Player をお勧めします。

    次の例では、ApsaraVideo Player の Web バージョンを使用しています。 image

    a. ビデオタイプを [ブロードキャスト] に設定します。

    b. ストリーミング URL を入力します。

    c. [プレビュー] タブをクリックします。

    重要

    ApsaraVideo Player Web バージョンを使用する場合は、HTTPS 証明書を設定し、クロスドメインアクセス用に Access-Control-Allow-Origin ヘッダーを設定する必要があります。 詳細については、HTTP/S 設定 および HTTP ヘッダーの構成 をご参照ください。

高度な使用方法

トランスコードされたストリームをカプセル化する

ライブストリームカプセル化をトランスコーディングと組み合わせて、トランスコードされたストリームをカプセル化できます。

手順

  1. ソースストリームのトランスコーディングを構成します。 詳細については、ライブストリームトランスコーディング をご参照ください。

  2. AddLivePackageConfig 操作を呼び出し、ソースストリームとトランスコードされたストリームのカプセル化を構成します。 IgnoreTranscodefalse に設定します。 サンプルコード:

    // Specifies whether to encapsulate the transcoded stream. Default value: true, which indicates not encapsulating the transcoded stream.
    // トランスコードされたストリームをカプセル化するかどうかを指定します。 デフォルト値: true。トランスコードされたストリームをカプセル化しないことを示します。
    addLivePackageConfigRequest.setIgnoreTranscode(<false>);
  3. カプセル化およびトランスコードされたストリームのストリーミング URL を生成します。

    URL 形式:

    • デフォルトまたはカスタムのトランスコーディングテンプレートを使用する場合は、_トランスコーディングテンプレート IDStreamName に追加します。

      カプセル化およびトランスコードされたストリームの LL-HLS URL のサンプル:

      http://<DomainName>/<AppName>/<StreamName_Transcoding template ID>-llhls.m3u8?aliyunols=on&auth_key=1725503******
    • マルチビットレートトランスコーディングテンプレートを使用する場合は、_トランスコーディングテンプレートグループ IDStreamName に追加します。

    説明

    マルチビットレートトランスコーディングでカプセル化を使用する場合、システムはカプセル化構成のセグメント期間とコンテナフォーマット設定に従います。

    たとえば、コンテナフォーマットを CMAF に、プロトコルを DASH に設定すると、トランスコードされたストリーム用に DASH URL のみが生成されます。

  4. 互換性のあるプレーヤーを使用してストリームを再生します。

カプセル化されたストリームのタイムシフト

ライブストリームカプセル化でタイムシフトを利用できます。 詳細については、タイムシフト をご参照ください。

説明

タイムシフトでカプセル化を使用する場合、システムはカプセル化構成のセグメント期間とコンテナフォーマット設定に従います。

API リファレンス

ライブストリームカプセル化用 API