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

ApsaraVideo Live:ライブストリームのパッケージ化

最終更新日:Aug 12, 2026

ライブストリームのパッケージ化は、ライブストリームをさまざまなコンテナフォーマットに変換し、低遅延で各種ストリーミングプロトコル経由で再生できるようにする機能です。

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

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

オーディオ:AAC

ビデオ:H.264、H.265

仕組み

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

この機能を ライブストリームトランスコーディングタイムシフト と組み合わせることで、ストリーミング体験を向上させることができます。

メリット

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

    標準の HLS と比較して、LL-HLS はストリームをより小さな パーシャルセグメント (200 ミリ秒~1 秒) に分割します。このアプローチにより、プレイリストの再読み込みがブロックされ、エンドツーエンドの遅延が 3~5 秒に短縮されます。この低遅延のメリットは、使用するプレーヤーによって異なります。プレーヤーは 低遅延モード を有効にし、 #EXT-X-SERVER-CONTROL タグを検出する必要があります。従来の HLS プレーヤーでは、この低遅延動作は実現されません。より低い遅延が必要な場合は、リアルタイムストリーミング (RTS) を使用します。RTS は、ARTC プロトコル経由でストリームをインジェストすると、200~400 ミリ秒のエンドツーエンドの遅延を実現します。詳細については、「RTS の概要」をご参照ください。

  • 複数デバイスとの互換性向上

    デフォルトでは、ApsaraVideo Live は TS コンテナフォーマットを使用して HLS 経由でライブストリームを配信します。このフォーマットは、一部のデバイスやブラウザと互換性がありません。パッケージ化機能を使用してコンテンツを CMAF 形式にパッケージ化することで、より広範なデバイス、プラットフォーム、コーデック (H.265 を含む) をサポートできます。

  • 既存ストリームへの非侵入的な操作

    ライブストリームのパッケージ化を有効にしても、既存のストリームに影響はありません。この操作は、元のインジェストストリームに基づいて、追加のパッケージ化された再生ストリームを生成するだけです。既存の RTMP、HTTP-FLV、HLS ストリームは以前と同様に機能し、録画設定にも影響はありません。パッケージ化を有効にすると、CMAF および低遅延 HLS (LL-HLS) 形式の新しいストリーミング URL が利用可能になります。

制限事項

GOP サイズ

  • インジェストストリームの GOP サイズは一定である必要があります。トランスコードされたストリームをパッケージ化する場合、その GOP サイズも安定していることを確認してください。

  • 各セグメントの長さは、GOP サイズの倍数である必要があります。

LL-HLS プロトコル

  • ネットワーク状態が悪い場合、カクつきが増加することがあります。ビットレートを自動的に調整するマルチビットレートトランスコーディングとパッケージ化を併用することを推奨します。

  • カクつきや再生失敗を防ぐため、GOP サイズを 1 または 2 秒に設定してください。

  • メインのストリーミングドメインは、最大 100,000 人の視聴者をサポートできます。この上限を引き上げるには、チケットを起票してください。

設定の伝播

初めてパッケージ化設定を追加すると、システムはコンテンツ配信設定を更新します。これらの変更が有効になるまで 3~5 分かかります。

パッケージ化設定の作成

コンソールまたは API を使用して、パッケージ化設定を作成します。

説明

進行中のストリームの場合、設定は、ストリームを再インジェストした後に初めて有効になります。

コンソール

  1. ApsaraVideo Live コンソールにログインします。

  2. 左側メニューで、機能管理 > ライブストリームのカプセル化 を選択します。

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

  4. [パッケージ化設定] ダイアログボックスで、次のパラメーターを設定します。

    パラメーター

    説明

    AppName

    すべてのアプリケーションに適用するには、アスタリスク (*) を入力します。特定のアプリケーションを対象にするには、インジェスト URL の AppName を入力します。値の長さは 255 文字を超えることはできません。

    StreamName

    すべてのストリームに適用するには、アスタリスク (*) を入力します。特定のストリームを対象にするには、ストリーム名を入力します。値の長さは 255 文字を超えることはできません。

    プロトコル

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

    • HLS - CMAF

    • LL-HLS - CMAF

    • LL-HLS - TS

    • DASH - CMAF

    • HLS & DASH - CMAF

    セグメント数

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

    セグメント長 (秒)

    HLS または DASH の場合:1~10 の整数を入力します。GOP サイズの倍数に設定してください (推奨 GOP:5 秒)。

    LL-HLS の場合:1 または 2 を入力します。GOP サイズの倍数に設定してください (推奨 GOP:1 秒)。

    パート長 (ミリ秒)

    (LL-HLS のみ) パーシャルセグメントの長さを指定します。有効な値:200~1,000。セグメント長の 3 分の 1 よりわずかに大きい値を推奨します。

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

    トランスコードされたストリームをパッケージ化するかどうかを指定します。有効な値:

    • ソースストリームのみ

    • トランスコードされたストリームを含む

    説明

    ストリーミングドメインが中国本土外 (シンガポール、ドイツ、日本、またはインドネシア) のライブセンターを使用している場合、再生遅延が増加する可能性があります。本番環境で使用する前に、設定をテストしてください。

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

API

AddLivePackageConfig API を使用して、パッケージ化設定を追加します。

<Your RegionId><Your DomainName><Your AppName><Your StreamName> などのプレースホルダーを置き換えてください。

有効なプロトコルの値については、「AddLivePackageConfig」をご参照ください。

コード例

// このファイルは自動生成されたものです。編集しないでください。
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 の設定
        /*HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
                .connectionTimeout(Duration.ofSeconds(10)) // 接続タイムアウト時間を設定します。デフォルトは 10 秒です。
                .responseTimeout(Duration.ofSeconds(10)) // レスポンスタイムアウト時間を設定します。デフォルトは 20 秒です。
                .maxConnections(128) // 接続プールのサイズを設定します。
                .maxIdleTimeOut(Duration.ofSeconds(50)) // 接続プールのタイムアウトを設定します。デフォルトは 30 秒です。
                // プロキシを設定します。
                .proxy(new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("<YOUR-PROXY-HOSTNAME>", 9001))
                        .setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>"))
                // https 接続の場合は、証明書を設定するか、証明書を無視する (.ignoreSSL(true)) 必要があります。
                .x509TrustManagers(new X509TrustManager[]{})
                .keyManagers(new KeyManager[]{})
                .ignoreSSL(false)
                .build();*/

        // ak、secret、token などの認証情報を設定します。
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // 環境変数 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")) // STS トークンを使用
                .build());

        // Client の設定
        AsyncClient client = AsyncClient.builder()
                .region("<Your RegionId>") // リージョン ID
                //.httpClient(httpClient) // 設定済みの HttpClient を使用します。それ以外の場合は、デフォルトの HttpClient (Apache HttpClient) を使用します。
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // サービスレベルの設定
                // クライアントレベルの設定を上書きし、エンドポイントや HTTP リクエストパラメーターなどを設定できます。
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // エンドポイントについては、https://api.alibabacloud.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // API リクエストのパラメーター設定
        AddLivePackageConfigRequest addLivePackageConfigRequest = AddLivePackageConfigRequest.builder()
                .regionId("<Your RegionId>")
                .domainName("<Your DomainName>")
                .appName("<Your AppName>")
                .streamName("<Your StreamName>")
                .protocol("<Protocol>")
                // リクエストレベルの設定を上書きし、HTTP リクエストパラメーターなどを設定できます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

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

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

}
説明
  • SDK の設定手順については、「Java SDK の使用」をご参照ください。

  • 設定後も、元のストリーミングURLは引き続きアクセス可能です。

パッケージ化されたストリームのインジェストと再生

ストリームのインジェスト

スムーズな再生のため、インジェストストリームの GOP サイズは一貫性を保ってください。

Open Broadcaster Software (OBS) を使用する場合の推奨設定は次のとおりです。

image.png

パッケージ化されたストリームの再生

  1. ストリーミング URL を取得します。フォーマットはプロトコルによって異なります。

    プロトコル

    URL フォーマット

    HLS

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

    DASH

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

    LL-HLS

    http://<DomainName>/<AppName>/<StreamName>-llhls.m3u8?aliyunols=on&auth_key=<AuthKey>

    重要

    aliyunols=on パラメーターは、パッケージ化されたストリームの URL に必須です。

    URL ジェネレーターを使用してストリーミング URL を生成できます。URL フォーマットは設定によって異なります。

    コンテナフォーマット

    プロトコル

    生成される URL タイプ

    TS

    LL-HLS

    LL-HLS と HLS

    CMAF

    LL-HLS

    LL-HLS と HLS

    CMAF

    HLS

    HLS

    CMAF

    DASH

    DASH

    CMAF

    HLS & DASH

    HLS と DASH

  2. 互換性のあるプレーヤーでストリームを再生します。ApsaraVideo Player の使用を推奨します。

    ApsaraVideo Player Web デモを使用するには:image

    a. [動画タイプ][ブロードキャスト] に設定します。

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

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

    重要

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

高度な使用方法

トランスコードされたストリームのパッケージ化

パッケージ化とトランスコーディングを組み合わせて、トランスコードされたストリームをパッケージ化できます。

操作手順

  1. ソースストリームのトランスコーディングを設定します。詳細については、「ユースケース」をご参照ください。

  2. パッケージ化設定を作成する際、コンソールで [トランスコードされたストリーム][トランスコードされたストリームを含む] に設定するか、AddLivePackageConfig API を使用して IgnoreTranscodefalse に設定します。

    // パッケージ化にトランスコードされたストリームを含める (デフォルト: true = 除外)
    addLivePackageConfigRequest.setIgnoreTranscode(false);
  3. パッケージ化されたトランスコード済みストリームのストリーミング URL を生成します。

    • デフォルトまたはカスタムトランスコードテンプレートStreamName_<template-id> を追加します。例:

      http://<DomainName>/<AppName>/<StreamName>_<template-id>-llhls.m3u8?aliyunols=on&auth_key=<AuthKey>
    • マルチビットレートトランスコーディングテンプレートStreamName_<template-group-id> を追加します。

    説明

    パッケージ化とマルチビットレートトランスコーディングを組み合わせることで、アダプティブ再生が可能になり、プレーヤーはネットワーク状態が悪いときに自動的に低ビットレートに切り替えることができます。

    出力 URL の動作は、使用されるトランスコードテンプレートの種類によって異なります。

    マルチビットレートトランスコーディングの場合:

    パッケージ化設定は、トランスコードされたストリームの出力フォーマットを上書きします。たとえば、パッケージ化フォーマットとして DASH - CMAF を指定した場合、システムはマルチビットレートストリームに対して DASH - CMAF URL のみを生成し、HLS URL は生成しません。

    デフォルトまたはカスタムトランスコーディングの場合:

    元のトランスコード済みストリームの URL は影響を受けません。代わりに、システムはこれらのトランスコード済みストリームに対して追加のパッケージ化された URL を生成します。

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

パッケージ化されたストリームのタイムシフト

パッケージ化されたストリームでタイムシフトを使用できます。詳細については、「タイムシフト」をご参照ください。

タイムシフトが有効になっている場合、タイムシフトされたセグメントのフォーマットは、パッケージ化設定で指定されたセグメント長とフォーマットを継承します。

  • HLS または LL-HLS (CMAF):タイムシフトされたセグメントは CMAF 形式になります。

  • LL-HLS (TS):タイムシフトされたセグメントは TS 形式になります。

関連 API

ライブストリームのパッケージ化に関するAPI操作