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

ApsaraVideo Live:ライブストリーミング録画

最終更新日:Nov 28, 2025

ApsaraVideo Live では、後で再生するためにライブストリームをリアルタイムで録画できます。このトピックでは、ライブストリーミング録画機能について説明します。

機能紹介

ApsaraVideo Live は、プッシュクライアントからリアルタイムでデータをストリーミングします。ストリーム終了後に再度視聴するには、ライブストリーミング録画機能を使用する必要があります。

ライブストリーミング録画機能は、ライブセンターからストリームデータを録画し、指定したストレージの場所に保存します。利用可能なストレージ方法は、レコーディングして VOD に保存するレコーディングして OSS に保存する の 2 つです。

ライブストリーミング録画の仕組み

ライブストリーミング録画プロセスでは、プッシュされたライブストリームを取得し、音声と動画を TS コンテナフォーマットの個別のメディアセグメントにカプセル化して保存します。ライブストリーミング録画は、以下の原則に従います。

  • ライブストリーミング録画は、RTMP や FLV から TS への変換など、音声と動画のコンテナフォーマットのみを変更します。エンコーディングレイヤーで音声または動画のコンテンツを変更することはありません。たとえば、プッシュされたストリームに映像の乱れがある場合、録画されたファイルにも映像の乱れが含まれます。

  • ライブストリーミング録画には、ご利用のストレージアドレスに録画を書き込む権限があります。書き込んだ録画ファイルを含め、ストレージアドレスにあるファイルを変更または削除する権限はありません。ご利用のストレージアドレスにある録画ファイルの管理は、お客様の責任となります。

重要

ライブストリーミング録画機能を使用すると、録画サービス料金が発生します。デフォルトでは、録画は TS/M3U8 ファイル形式で保存されます。トランスコーディングとコンテナフォーマットの変換が必要な場合は、追加で録画コンテナフォーマット変換料金が発生します。課金ルールの詳細については、「ライブストリーミング録画料金」をご参照ください。

利用条件

音声および動画のエンコード形式

ライブストリーミング録画では、まずライブストリームを TS ファイルにセグメント化するため、プッシュされたストリームの音声および動画のエンコード形式は、TS コンテナフォーマットの要件を満たす必要があります。FLV および ISO/IEC 13818-1 規格に基づき、ライブストリーミング録画は以下のエンコード形式のみをサポートします。

  • 動画:H.264、HEVC、MPEG-4

  • 音声:AAC、MP3

説明

ライブストリームに他のエンコード形式を使用した音声または動画が含まれている場合、ライブストリーミング録画が失敗することがあります。たとえば、録画が生成されない、録画が黒い画面になる、録画に音声がないなどの問題が発生する可能性があります。その他の予期せぬ問題が発生することもあります。

異常なライブストリームの処理

  1. 標準ストリーム (エンコード要件を満たし、フレームレートとタイムスタンプが安定している) ✅ 録画は 100% 生成されます。

  2. 軽微な異常があるストリーム (時折のフレームレートの変動やタイムスタンプのジャンプ) ✅ システムが互換性のためにこれらの問題を自動的に処理します。

  3. 重大な異常があるストリーム (長時間の動画フレームの欠落、タイムスタンプの乱れ、またはキーフレームの欠落) ❌ 録画の成功は保証されません。

機能比較

ライブストリームは、ApsaraVideo VOD または OSS のいずれかに録画して保存できます。これら 2 つの方法は異なるシナリオに適しています。必要に応じてストレージ方法を選択できます。

ストレージ方法

関連プロダクトまたはサービス

サポートされる録画方法

コンテナフォーマット

シナリオ

VOD への録画と保存

ApsaraVideo VOD の有効化

  • 自動録画:ドメイン名、AppName、StreamName による多階層の録画を有効にします。

  • TS/M3U8 (デフォルト)

動画編集、再生、動画サムネイルの設定など、録画コンテンツのポストプロダクションに最適です。

OSS への録画と保存

OSS の有効化

  • 自動録画:ドメイン名、AppName、StreamName に基づいて複数のレベルでストリームを録画します。

  • オンデマンド録画:コールバックを設定します。ライブストリーミングサービスは、録画の応答を受信した後に録画を開始します。

  • 手動録画:デフォルトでは録画は実行されません。API を呼び出して手動で録画を実行できます。

  • TS/M3U8 (デフォルト)

  • MP4

  • FLV

  • CMAF

ストレージに重点を置いた、録画コンテンツの管理に最適です。

説明
  • 同じライブストリームに対して両方のストレージ方法を設定することはできません

  • すべての録画において、ライブストリームはまず TS ファイルにセグメント化され、その後、指定されたコンテナフォーマットの録画ファイルにパッケージ化されます。TS/M3U8 以外のフォーマットには、コンテナフォーマット変換料金が課金されます。

自動録画のルール

ドメイン名、アプリケーション名、またはストリーム名を指定して、ドメイン名配下のすべてのアプリケーション、アプリケーション内のすべてのライブストリーム、または特定のライブストリームを録画できます。AppName と StreamName にアスタリスク (*) を設定すると、すべてのアプリケーション名とすべてのストリーム名を表すことができます。

録画テンプレートを設定して録画を OSS または VOD に保存する場合、複数のテンプレートを設定できます。ライブストリームが複数の録画テンプレートに一致する場合、優先度ルールによってどのテンプレートが有効になるかが決まります。次の表に優先度を示します。数値が小さいほど優先度が高くなります。

優先度

DomainName

AppName

StreamName

1

2

*

3

*

*

チェックマーク (✓) は、パラメーターがアスタリスク (*) ではなく特定の値で設定されていることを示します。アスタリスク (*) は、パラメーターがすべての値に一致するように設定されていることを示します。

VOD への録画と保存

前提条件

ライブストリームの録画を ApsaraVideo VOD に保存するには、ApsaraVideo VOD サービスを有効化し、ストレージバケットを管理する必要があります。

重要
  • 録画は ApsaraVideo VOD に保存され、ストレージ料金が発生します。詳細については、「基本サービス課金」をご参照ください。

  • VOD システムバケットを有効にする場合、VOD システムバケットのリージョンは、設定するドメイン名のライブセンターのリージョンと同じである必要があります。

  • ApsaraVideo Live は、金融クラウドのアカウントに対する VOD への録画をサポートしていません。

機能設定

ApsaraVideo Live は、VOD への録画と保存の設定を追加するために 2 つの方法を提供します。

説明
  • 設定を完了した後、録画設定を有効にするには、ストリームプッシュを再起動する必要があります。

  • ストリームが 180 秒間中断された後、録画が生成されます。

方法 1:コンソールを使用

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

  2. 左側のナビゲーションウィンドウで、機能管理 > ライブストリームのレコーディング を選択します。ライブストリームのレコーディング ページで、VOD に保存して設定する タブをクリックします。

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

  4. 録画テンプレートを設定します。

    image

    次の表に、録画テンプレートのパラメーターを説明します。

    パラメーター

    説明

    アプリケーション名

    動画のアプリケーション名。入力した アプリケーション名 は、設定が有効になるために、ストリームプッシュの アプリケーション名 と同じである必要があります。ドメイン名配下のすべてのアプリケーションのライブストリームを録画する場合は、ワイルドカード文字 (*) を入力します。

    ストリーム名

    VOD への録画は、ストリームレベルの録画をサポートしています。特定のストリーム名を入力します。指定した [AppName] 配下のすべてのストリームを録画するには、アスタリスク (*) を入力します。

    説明

    [AppName][StreamName] パラメーターには、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。長さは 255 文字に制限されています。

    ストレージアドレス

    現在のリージョンの VOD サービスで作成されたストレージアドレスを選択できます。ストレージアドレスが見つからない場合は、[更新] をクリックして同期します。

    録画時間

    録画時間 は、ライブストリームから生成されるビデオオンデマンド (VOD) ファイルの最大時間です。有効範囲は 15 分から 360 分です。指定された録画周期を超えると、システムは録画命名規則に基づいて新しいファイルを生成します。デフォルトの ts セグメントの長さは 30 秒です。

    トランスコード設定

    リストからトランスコーディングルールを選択して、VOD サービスで録画された動画をトランスコーディングします。動画を異なる仕様にトランスコーディングしたり、トランスコーディングせずに元の品質を維持したりできます。

    録画トランスコーディングテンプレートの操作の詳細については、「ApsaraVideo VOD トランスコーディング設定」をご参照ください。

    説明

    ApsaraVideo VOD トランスコーディングテンプレートのリージョンは、現在のドメイン名のリージョンと同じである必要があります。たとえば、現在のドメイン名が中国 (上海) リージョンにある場合、ApsaraVideo VOD トランスコーディングテンプレートも中国 (上海) リージョンにある必要があります。

    自動マージ

    この機能を有効にすると、ライブストリームの録画が終了した後、複数の録画周期ファイルが自動的に 1 つの録画にマージされ、VOD に保存されます。

    説明

    複数周期の録画の自動マージを有効にすると、ApsaraVideo VOD の編集・制作機能とトランスコーディング機能が使用されます。課金の詳細については、「編集・制作の課金」および「メディアアセットのトランスコーディング課金」をご参照ください。

    トランスコードテンプレートを自動的にマージする

    ドロップダウンリストからトランスコーディングテンプレートを選択します。これは ApsaraVideo VOD から取得されます。システムは、トランスコーディングテンプレートの設定に基づいて、マージされた動画のトランスコーディングを実行します。詳細については、「トランスコーディングテンプレート」をご参照ください。

    説明

    ApsaraVideo VOD トランスコーディングテンプレートのリージョンは、現在のドメイン名のリージョンと同じである必要があります。たとえば、現在のドメイン名が中国 (上海) リージョンにある場合、ApsaraVideo VOD トランスコーディングテンプレートも中国 (上海) リージョンにある必要があります。

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

方法 2:API を使用

VOD へのライブストリーム録画設定の追加 API を呼び出して設定を追加できます。以下は SDK の呼び出し例です。

// このファイルは自動生成されたものです。編集しないでください。
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 AddLiveRecordVodConfig {
    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());

        // クライアントを設定します。
        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.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

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

        // API リクエストの戻り値を非同期で取得します。
        CompletableFuture<AddLiveRecordVodConfigResponse> response = client.addLiveRecordVodConfig(addLiveRecordVodConfigRequest);
        // API リクエストの戻り値を同期で取得します。
        AddLiveRecordVodConfigResponse 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();
    }

}
説明
  • 上記のサンプルコードは、ドメイン名 <DomainName> の VOD への録画を設定します。AppName は <AppName>、StreamName は <StreamName> です。録画されたコンテンツはトランスコーディングされず (VOD_NO_TRANSCODE)、ApsaraVideo VOD システムバケット <StorageLocation> に保存されます。

  • AppName と StreamName の設定の詳細については、「自動録画のルール」をご参照ください。

録画コンテンツのトランスコーディング

VOD はデフォルトで M3U8 形式で録画を保存します。他の形式で録画を保存するには、[録画トランスコーディングテンプレート] を設定できます。

 addLiveRecordVodConfigRequest.setVodTranscodeGroupId("<TranscodeGroupId>");
説明
  • VOD システムでトランスコーディングテンプレートを設定する必要があります。詳細については、「トランスコーディングテンプレート」をご参照ください。

  • <TranscodeGroupId> は、[VOD] で設定された [トランスコーディングテンプレートグループ ID] です。

  • トランスコーディングを設定すると、録画がトランスコーディングされ、トランスコーディング URL が生成されます。元のファイルは保持されます。

録画のマージ

録画は 2 つの方法でマージできます。

  1. 同じストリームが 180 秒未満で中断され、その後プッシュが再開された場合、録画は自動的に 1 つのファイルにマージされます。

  2. ストリームプッシュの時間が 録画時間 を超えると、ファイルのマージが発生します。その結果、新しい録画ファイルが生成されます。(たとえば、録画周期が 5 分に設定され、ストリームプッシュの時間が 8 分の場合、1 回のストリームプッシュで 2 つの録画ファイルが生成されます。)

    複数の録画周期のファイルをマージするには、マージ機能を設定できます。

    重要

    複数周期の録画の自動マージを有効にすると、ApsaraVideo VOD の編集、制作、トランスコーディング機能が使用されます。課金の詳細については、「付加価値サービス課金」および「基本サービス課金」をご参照ください。

    次のサンプルコードは、ライブ録画を VOD に変換する設定の追加 API で録画ファイルのマージを設定する方法を示しています。

    addLiveRecordVodConfigRequest.setAutoCompose("ON");
    addLiveRecordVodConfigRequest.setComposeVodTranscodeGroupId("<TranscodeGroupId>");
    説明
    • マージ後、新しいファイルが生成されます。元の録画は保持されます。

    • ビデオオンデマンド (VOD) システムでトランスコーディングテンプレートを設定する必要があります。詳細については、「トランスコーディングテンプレート」をご参照ください。

    • <TranscodeGroupId> は、VOD システムで設定されたトランスコーディングテンプレートグループ ID です。

    次のサンプルコードは、録画周期の時間を設定する方法を示しています。

    // 単位:秒。値の範囲:300~21600。デフォルト値:900。
    addLiveRecordVodConfigRequest.setCycleDuration(<300>);

録画の管理

ApsaraVideo Live コンソールを使用して VOD に保存された録画を[表示]し、ApsaraVideo VOD サービスを使用してそれらを管理できます。詳細については、「メディア管理」をご参照ください。

ApsaraVideo Live コンソールで VOD に保存された録画を表示する

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

  2. 左側のナビゲーションウィンドウで、機能管理 > ライブストリームのレコーディング を選択します。ライブストリームのレコーディング ページで、録画ファイル管理 タブをクリックします。

  3. 設定したストリーミングドメインを選択します。

  4. VOD タブをクリックします。

    image

  5. 特定の録画を管理するには、[VOD コンソールで管理] をクリックするか、[VOD コンソール] の [音声/動画] セクションで録画を管理します。

    image

OSS への録画と保存

前提条件

ライブストリーム録画を設定して録画を OSS に保存するには、次の操作を完了する必要があります。

  1. OSS を有効化し、バケットを作成します。詳細については、「バケットの作成」をご参照ください。

    重要
    • 録画ファイルを OSS に保存すると、ストレージ料金が発生します。詳細については、「ストレージ料金」をご参照ください。

    • 録画を保存する OSS バケットの [リージョン] は、録画用に設定されたドメイン名のリージョンと一致する必要があります。たとえば、ライブストリームのドメイン名が中国 (上海) リージョンにある場合、バケットも中国 (上海) リージョンにある必要があります。

  2. ApsaraVideo Live が OSS にデータを書き込むための権限を設定します。この権限付与は、通常、ApsaraVideo Live サービスを有効化するときに自動的に行われます。

    重要

    誤ってこの権限を削除した場合は、[クラウドリソースへのアクセスを承認] をクリックして再度権限を付与できます。

    権限の付与には Alibaba Cloud アカウントを使用することを推奨します。RAM ユーザーを使用する場合、そのユーザーには ram:CreateRoleram:GetRoleram:ListPoliciesForRole、および ram:AttachPolicyToRole の権限が必要です。これらの権限を RAM ユーザーに付与するとセキュリティリスクが生じるため、推奨されません。

機能設定

ApsaraVideo Live は、OSS への録画と保存の設定を追加するために 2 つの方法を提供します。

説明
  • 設定を完了した後、録画設定を有効にするには、ストリームプッシュを再起動する必要があります。

  • ストリームが設定されたストリーム中断のマージ期間 (デフォルトでは 180 秒) を超えて中断された後、録画が生成されます。

方法 1:コンソールを使用

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

  2. 左側のナビゲーションウィンドウで、機能管理 > ライブストリームのレコーディング を選択します。ライブストリームのレコーディング ページで、OSS に保存して設定する タブをクリックします。

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

  4. 録画テンプレートを設定します。

    image

    表 1. 録画テンプレートのパラメーター

    パラメーター

    説明

    アプリケーション名

    アプリケーション名。入力した [AppName] は、設定が有効になるために、プッシュ URL の [AppName] と同じである必要があります。ドメイン名レベルで録画するには、アスタリスク (*) を入力します。

    ストリーム名

    OSS への録画は、ストリームレベルの録画をサポートしています。特定のストリーム名を入力します。指定した [AppName] 配下のすべてのストリームを録画するには、アスタリスク (*) を入力します。

    説明
    • [AppName][StreamName] パラメーターには、英字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。長さは 255 文字に制限されています。

    • アスタリスク (*) は単独の値としてのみ入力でき、文字列内のワイルドカード文字としては使用できません。

    格納場所

    現在のリージョンの OSS で作成されたバケットを選択できます。

    説明

    ストレージバケットには 2 種類あります。

    1. 標準バケット:一般的なファイルストレージに使用されます。

    2. メディアバケット:動画トランスコーディング専用です。このタイプのバケットに保存されたファイルは、自動的に MPS トランスコーディングジョブをトリガーできます。

    システムはバケットの種類を区別しません。動画トランスコーディングを実行するには、トランスコーディングされたメディアファイルが正しい場所に保存されるように、メディアバケット名をメモしておいてください。

    切断のスプライス時間

    ストリームの中断期間が指定された結合期間を超えると、新しいファイルが生成されます。中断されたストリームの結合期間は、15 秒から 21,600 秒の値に設定できます。

    格納形式

    サポートされている形式は flv、m3u8、mp4、cmaf です。

    説明

    少なくとも 1 つのストレージ形式を設定する必要があります。CMAF 形式は M3U8 形式と同時に選択することはできません。

    命名規則

    デフォルトのストレージパスは record/{AppName}/{StreamName}/{EscapedStartTime }_{EscapedEndTime } です。

    例:

    [AppName]liveApp**** で、[StreamName]liveStream**** の場合、[m3u8] 形式の録画のストレージパスは record/liveApp****/liveStream****/{EscapedStartTime}_{EscapedEndTime } です。

    TS ファイルの長さ

    単一セグメントの期間。デフォルト値は 30 秒です。値は 5 秒から 30 秒の範囲で指定できます。

    録画時間

    録画時間 は 15 分から 360 分の値に設定できます。サポートされる最大録画時間は 6 時間です。指定された録画周期を超えると、システムは録画命名規則に基づいて新しいファイルを生成します。

    説明

    録画周期は、ライブストリームから変換された VOD ファイルの最大時間です。

  5. トランスコーディング済みストリームの録画を設定します。(オプション)

    重要

    ライブストリームトランスコーディング機能を使用する場合、トランスコーディングの標準、解像度、およびトランスコーディングされたストリームの合計時間に基づいて課金されます。詳細については、「ライブストリームトランスコーディング料金」をご参照ください。

    image

    表 2. トランスコーディング済みストリームの録画のパラメーター

    パラメーター

    説明

    トランスコード済みストリームの記録

    トランスコード済みストリームの記録 スイッチをオンにして、パラメーターを設定します。

    格納形式

    サポートされている形式は [flv][m3u8][mp4]、および [cmaf] です。

    説明

    少なくとも 1 つのストレージ形式を設定する必要があります。CMAF 形式は M3U8 形式と同時に選択することはできません。

    命名規則

    デフォルトのストレージパスは transcodeRecord/{AppName}/{StreamName}_{Transcoding Template ID}/{EscapedStartTime }_{EscapedEndTime } です。

    例:

    [AppName]liveApp****[StreamName]liveStream****[トランスコーディングテンプレート ID] が lld の場合、[m3u8] 形式の録画の実際のストレージパスは transcodeRecord/liveApp****/liveStream****_lld/{EscapedStartTime}_{EscapedEndTime } です。

    TS ファイルの長さ

    単一セグメントの期間。デフォルト値は 30 秒です。値は 5 秒から 30 秒の範囲で指定できます。

    録画時間

    録画周期は 15 分から 360 分の範囲です。最大録画時間は 6 時間です。時間が 6 時間を超えると、システムは録画命名規則に基づいて新しいファイルを生成します。

    説明

    録画周期は、ライブストリームから変換された VOD ファイルの最大時間です。

    トランスコード設定 ID

    特定のトランスコーディングテンプレート (最大 10 個) またはすべてのトランスコーディングテンプレートを選択できます。

    トランスコーディングテンプレートを有効にするには、その [AppName] が録画テンプレートの AppName と同じである必要があります。トランスコーディングテンプレートがない場合は、まず追加してください。詳細については、「デフォルトのトランスコーディング」をご参照ください。

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

方法 2:API を使用

録画設定の追加 API を呼び出して設定を追加できます。以下は SDK の呼び出し例です。

// このファイルは自動生成されたものです。編集しないでください。
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 AddLiveAppRecordConfig {
    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());

        // クライアントを設定します。
        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.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // API リクエストのパラメーター設定
        AddLiveAppRecordConfigRequest addLiveAppRecordConfigRequest = AddLiveAppRecordConfigRequest.builder()
                .domainName("<Your DomainName>")
                .appName("<Your AppName>")
                .ossEndpoint("<Your OSSEndpoint>")
                .ossBucket("<Your OSSBucket>")
                .streamName("<Your StreamName>")
                // リクエストレベルの設定を上書きします。Http リクエストパラメーターなどを設定できます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // API リクエストの戻り値を非同期で取得します。
        CompletableFuture<AddLiveAppRecordConfigResponse> response = client.addLiveAppRecordConfig(addLiveAppRecordConfigRequest);
        // API リクエストの戻り値を同期で取得します。
        AddLiveAppRecordConfigResponse 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();
    }

}
説明
  • 上記のサンプルコードは、<DomainName> ドメイン名の OSS への録画を設定します。AppName は <AppName>、StreamName は <StreamName>、ストレージ形式は [m3u8] で、録画は <OssBucket> に保存されます。

  • <OssBucket> のリージョンの <OssEndpoint> は、OSS ドキュメントの「リージョンとエンドポイント」で確認できます。

  • AppName と StreamName の設定の詳細については、「自動録画のルール」をご参照ください。

トランスコーディング済みストリームの録画

録画サイズを削減したい場合は、トランスコーディング済みストリームを録画できます。このプロセスでは、動画の品質を維持しながら、動画ビットレートを調整し、動画圧縮率を高めます。OSS への録画機能は、トランスコーディング済みストリームとオリジナルストリームの両方を同時に保存することをサポートしています。また、トランスコーディング済みストリームのみ、またはオリジナルストリームのみを保存することもサポートしています。

重要

ライブストリームトランスコーディング機能を使用する場合、トランスコーディングの標準、解像度、およびトランスコーディングされたストリームの合計時間に基づいて課金されます。詳細については、「ライブストリームトランスコーディング料金」をご参照ください。

次のサンプルコードは、トランスコーディング済みストリームの録画を設定する方法を示しています。

        // <> 内のコンテンツを実際の値に置き換えてください。        
        List<AddLiveAppRecordConfigRequest.TranscodeRecordFormat> transcodeFormatList=new ArrayList<AddLiveAppRecordConfigRequest.TranscodeRecordFormat>();
        AddLiveAppRecordConfigRequest.TranscodeRecordFormat m3u8TranscodeFormat=new AddLiveAppRecordConfigRequest.TranscodeRecordFormat();
        m3u8TranscodeFormat.setFormat("m3u8");
        // OSS に保存されるトランスコーディング済みストリームの録画ファイル名。
        m3u8TranscodeFormat.setOssObjectPrefix("<transcodeRecord/{AppName}/{StreamName}/{EscapedStartTime}_{EscapedEndTime}>");
        // トランスコーディング済みストリーム録画のセグメント名。
        m3u8TranscodeFormat.setSliceOssObjectPrefix("<transcodeRecord/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}>");
        transcodeFormatList.add(m3u8TranscodeFormat);
        addLiveAppRecordConfigRequest.setTranscodeRecordFormats(transcodeFormatList);
        List<String> transcodeTemplateList=new ArrayList<String>();
        // トランスコーディングテンプレート ID。
        transcodeTemplateList.add("<lld>");
        addLiveAppRecordConfigRequest.setTranscodeTemplatess(transcodeTemplateList);
説明
  • トランスコーディング済みストリームのみを録画する場合、オリジナルストリーム を設定する必要はありません (setRecordFormats)。

  • トランスコーディング済みストリームを録画する場合 (setTranscodeRecordFormats)、設定済みのトランスコーディングテンプレートの ID も指定する必要があります (setTranscodeTemplatess)。詳細については、「ライブストリームトランスコーディング」をご参照ください。

  • トランスコーディング済みストリームを録画するには、トランスコーディングテンプレートでトランスコーディング設定を [ストリームプッシュによるトリガー] に設定する必要があります。

  • トランスコーディング済みストリームの録画の場合、StreamName は StreamName_トランスコーディングテンプレート ID の形式に変更されます。

カスタム録画ポリシー

[機能設定] でライブストリーミング録画機能が設定されている場合、ライブコンテンツはストリームプッシュ中に自動的に録画されます。このプロセスは 自動録画 と呼ばれます。

ただし、ビジネスロジックに基づいて特定のライブストリームを録画するかどうかを決定したい場合があります。ライブストリーミング録画機能は、このシナリオに対して 2 つのソリューションを提供します。

  1. ライブセンターが業務システムにコールバックを送信し、ライブストリームを録画する必要があるかどうかを問い合わせます。ライブセンターが録画が必要であることを示す応答を受信した後に録画が開始されます。これはオンデマンド録画と呼ばれます。

  2. 業務システムからライブストリーミングサービスを呼び出してライブコンテンツを録画する方法を手動録画と呼びます。

オンデマンド録画

按需录制

オンデマンド録画を実装するには、業務システムが「オンデマンド録画コールバック」で説明されているように、ライブストリーミングサービスの呼び出し用の URL を提供する必要があります。

次のサンプルコードは、オンデマンド録画を設定する方法を示しています。

        // OnDemand フィールドを 1 に設定して、HTTP コールバックによるオンデマンド録画を有効にします。
        addLiveAppRecordConfigRequest.setOnDemand(1);

また、ドメインレベルの録画コールバック設定の追加 API を呼び出して録画コールバックを設定することもできます。

次のサンプルコードは、録画コールバック設定を追加する方法を示しています。

// このファイルは自動生成されたものです。編集しないでください。
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 AddLiveRecordNotifyConfig {
    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());

        // クライアントを設定します。
        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.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // API リクエストのパラメーター設定
        AddLiveRecordNotifyConfigRequest addLiveRecordNotifyConfigRequest = AddLiveRecordNotifyConfigRequest.builder()
                .domainName("<Your DomainName>")
                .notifyUrl("<Your NotifyUrl>")
                // リクエストレベルの設定を上書きします。Http リクエストパラメーターなどを設定できます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // API リクエストの戻り値を非同期で取得します。
        CompletableFuture<AddLiveRecordNotifyConfigResponse> response = client.addLiveRecordNotifyConfig(addLiveRecordNotifyConfigRequest);
        // API リクエストの戻り値を同期で取得します。
        AddLiveRecordNotifyConfigResponse 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();
    }

}
重要
  • <OnDemandUrl> はオンデマンド録画コールバックのリクエスト URL です。<NotifyUrl> は、録画イベントとステータスコールバックを含む録画コールバックの URL です。

  • <NotifyUrl> パラメーターは空にできないため、設定する必要があります。オンデマンド録画リクエストのみを受信し、録画イベントとステータスコールバックが不要な場合は、<NotifyUrl> にプレースホルダー URL を設定できます。

関連 API 操作

手動録画

手動録画を実装するには、自動録画機能を無効にする必要があります。次のサンプルコードは、その方法を示しています。

        // OnDemand フィールドを 7 に設定して、自動録画を無効にします。
        addLiveAppRecordConfigRequest.setOnDemand(7);

その後、ライブストリーム中に、リアルタイム録画命令 API を呼び出して、必要に応じて録画を開始できます。

サンプルコード:録画を開始する

        // <> 内のコンテンツを実際の値に置き換えてください。 
        RealTimeRecordCommandRequest realTimeRecordCommandRequest=new RealTimeRecordCommandRequest();
        realTimeRecordCommandRequest.setCommand("start");
        realTimeRecordCommandRequest.setAppName("<AppName>");
        realTimeRecordCommandRequest.setStreamName("<StreamName>");
        realTimeRecordCommandRequest.setDomainName("<DomainName>");
        RealTimeRecordCommandResponse realTimeRecordCommandResponse = null;
        try {
            realTimeRecordCommandResponse = client.getAcsResponse(realTimeRecordCommandRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println(new Gson().toJson(realTimeRecordCommandResponse));
説明
  • トランスコーディング済みストリームを録画している場合、<StreamName> を StreamName_トランスコーディングテンプレート ID の形式に設定する必要があります。

  • setCommand("start") は録画を開始します。

録画の停止

自動録画[オンデマンド録画]、または 手動録画 を使用して開始された録画は、リアルタイム録画命令 API を呼び出すことで停止できます。

// このファイルは自動生成されたものです。編集しないでください。
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 RealTimeRecordCommand {
    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());

        // クライアントを設定します。
        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.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

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

        // API リクエストの戻り値を非同期で取得します。
        CompletableFuture<RealTimeRecordCommandResponse> response = client.realTimeRecordCommand(realTimeRecordCommandRequest);
        // API リクエストの戻り値を同期で取得します。
        RealTimeRecordCommandResponse 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();
    }

}
説明
  • setCommand("stop") は録画を停止します。

  • 録画を停止すると、ストリーム中断のマージ期間が経過した後に録画ファイルが生成されます。

  • トランスコーディング済みストリームを録画している場合、<StreamName> を StreamName_トランスコーディングテンプレート ID の形式に設定する必要があります。

中断ストリームの結合

ストリームプッシュが中断され、切断のスプライス時間 (デフォルト:180 秒) 以内に再開された場合、録画されたコンテンツは自動的に 1 つの録画にマージされます。

説明

システムはストリームがマージされるのを待つため、マージ期間が経過した後に録画が生成されます。

必要に応じて、ストリーム中断のマージ期間を調整できます。次のコードは、この期間を設定する方法を示しています。

// 単位:秒。値の範囲:15~21600。
addLiveAppRecordConfigRequest.setDelayTime(<180>);

デフォルト値の 180 秒を使用することを推奨します。録画を生成する時間が短すぎると、ネットワークの変動、ストリームの中断、ストリームの再プッシュにより、多くの録画が生成される可能性があります。時間が長すぎると、ライブストリームが終了 (ストリームが中断) した後、長時間録画が利用できなくなる可能性があります。

一部のシナリオでは、ストリームの結合を待たずに、ライブストリームが終了した直後に録画を生成したい場合があります。これを行うには、ストリームプッシュの コールバックイベント を設定します。詳細については、「ストリームプッシュコールバック」をご参照ください。ストリームプッシュが終了したという通知を受け取ったら、リアルタイム録画命令 API を呼び出してストリームの結合をキャンセルできます。

        // <> 内のコンテンツを実際の値に置き換えてください。
        RealTimeRecordCommandRequest realTimeRecordCommandRequest=new RealTimeRecordCommandRequest();
        realTimeRecordCommandRequest.setCommand("cancel_delay");
        realTimeRecordCommandRequest.setAppName("<AppName>");
        realTimeRecordCommandRequest.setStreamName("<StreamName>");
        realTimeRecordCommandRequest.setDomainName("<DomainName>");
        RealTimeRecordCommandResponse realTimeRecordCommandResponse = null;
        try {
            realTimeRecordCommandResponse = client.getAcsResponse(realTimeRecordCommandRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println(new Gson().toJson(realTimeRecordCommandResponse));
説明
  • トランスコーディング済みストリームを録画している場合、<StreamName> を StreamName_トランスコーディングテンプレート ID の形式に設定する必要があります。

  • setCommand("cancel_delay") はマージの遅延をキャンセルし、録画を完全に停止して、すぐに録画ファイルを生成します。

録画周期の設定

ライブストリームの時間が設定された録画周期を超える場合、新しいファイルが生成されます。たとえば、ライブストリームが 20 分で、録画周期が 15 分に設定されている場合、2 つの録画が生成されます。録画周期は 15 分から 360 の範囲で設定できます。

次のサンプルコードは、録画周期を設定する方法を示しています。

        List<AddLiveAppRecordConfigRequest.RecordFormat> formatList=new ArrayList<AddLiveAppRecordConfigRequest.RecordFormat>();
        AddLiveAppRecordConfigRequest.RecordFormat m3u8Format=new AddLiveAppRecordConfigRequest.RecordFormat();
        m3u8Format.setFormat("m3u8");
        m3u8Format.setOssObjectPrefix("<record/{AppName}/{StreamName}/{EscapedStartTime}_{EscapedEndTime}>");
        m3u8Format.setSliceOssObjectPrefix("<record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}>");
       // 録画周期を秒単位で設定します。
        m3u8Format.setCycleDuration(<900>);
        AddLiveAppRecordConfigRequest.RecordFormat mp4Format=new AddLiveAppRecordConfigRequest.RecordFormat();
        mp4Format.setFormat("mp4");
        mp4Format.setOssObjectPrefix("<record/{AppName}/{StreamName}/{EscapedStartTime}_{EscapedEndTime}>");
        // 録画周期を秒単位で設定します。
        mp4Format.setCycleDuration(<1500>);
        formatList.add(mp4Format);
        formatList.add(m3u8Format);
        addLiveAppRecordConfigRequest.setRecordFormats(formatList);
説明

上記の例では、2 つのストレージ形式が設定されており、それぞれに異なる録画周期があります。この設定で 20 のストリームをプッシュすると、3 つの録画 (MP4 が 1 つ、M3U8 が 2 つ) が生成されます。

ライブストリームの時間が録画周期を超えない場合、ライブストリームが終了した後に録画が生成されます。ライブストリームが終了する前に録画を表示するには、リアルタイム録画命令 API を呼び出して録画プロセスを強制的に再起動できます。再起動前に録画が進行中だった場合、録画ファイルがすぐに生成されます。

次のサンプルコードは、録画を再起動する方法を示しています。

        // <> 内のコンテンツを実際の値に置き換えてください。 
        RealTimeRecordCommandRequest realTimeRecordCommandRequest=new RealTimeRecordCommandRequest();
        realTimeRecordCommandRequest.setCommand("restart");
        realTimeRecordCommandRequest.setAppName("<AppName>");
        realTimeRecordCommandRequest.setStreamName("<StreamName>");
        realTimeRecordCommandRequest.setDomainName("<DomainName>");
        RealTimeRecordCommandResponse realTimeRecordCommandResponse = null;
        try {
            realTimeRecordCommandResponse = client.getAcsResponse(realTimeRecordCommandRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println(new Gson().toJson(realTimeRecordCommandResponse));
説明
  • setCommand("restart") は録画を再起動します。

  • トランスコーディング済みストリームを録画している場合、<StreamName> を StreamName_トランスコーディングテンプレート ID の形式に設定する必要があります。

  • ライブストリーム録画に複数のストレージ形式が設定されている場合、この操作はすべての形式の録画を再起動します。

録画のマージと取得

ApsaraVideo Live では、インデックスファイルを作成して、特定の期間の録画を取得したり、期間内の複数の録画を 1 つのファイルにマージしたりできます。

説明
  • 最終的なストレージ形式に関係なく、ライブストリーミング録画はまずライブストリームを TS ファイルにセグメント化し、その後、指定されたコンテナフォーマットの録画にパッケージ化します。この機能により、M3U8 インデックスファイルを作成して TS セグメントファイルを結合し、録画コンテンツをマージおよび取得できます。

  • マージまたは取得する録画コンテンツには、M3U8 ストレージ形式が含まれている必要があります。

録画インデックスファイルの作成 API を呼び出してインデックスファイルを作成できます。

次のサンプルコードは、録画コンテンツのインデックスファイルを作成する方法を示しています。

// このファイルは自動生成されたものです。編集しないでください。
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 CreateLiveStreamRecordIndexFiles {
    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());

        // クライアントを設定します。
        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.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // API リクエストのパラメーター設定
        CreateLiveStreamRecordIndexFilesRequest createLiveStreamRecordIndexFilesRequest = CreateLiveStreamRecordIndexFilesRequest.builder()
                .domainName("<Your domainName>")
                .appName("<Your appName>")
                .streamName("<Your streamName>")
                .ossEndpoint("<Your ossEndpoint>")
                .ossBucket("<Your ossBucket>")
                .ossObject("<Your ossObject>")
                .startTime("<Your startTime>")
                .endTime("<Your endTime>")
                // リクエストレベルの設定を上書きします。Http リクエストパラメーターなどを設定できます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // API リクエストの戻り値を非同期で取得します。
        CompletableFuture<CreateLiveStreamRecordIndexFilesResponse> response = client.createLiveStreamRecordIndexFiles(createLiveStreamRecordIndexFilesRequest);
        // API リクエストの戻り値を同期で取得します。
        CreateLiveStreamRecordIndexFilesResponse 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();
    }

}
説明
  • 上記の例では、ライブストリーム <AppName> <StreamName> の <StartTime> から <EndTime> までの録画コンテンツの新しいインデックスファイルを作成します。インデックスファイルは <OssEndpoint> の <OssBucket> に保存され、インデックスファイル名は <IndexFiles/OssObject.m3u8> です。

  • <StartTime> と <EndTime> の形式は yyyy-MM-ddTHH:mm:ssZ (UTC) です。

重要
  • 録画インデックスを作成するには、指定された時間内にライブストリームがプッシュされている必要があります。指定された時間内にライブストリームが発生しなかった場合、またはライブストリーム名が正しくない場合、録画インデックスの作成は失敗します。

  • 録画コンテンツは、ファイル情報 (AppName、StreamName、OSS ストレージパスを含む) とファイル自体の 2 つの部分で構成されます。ファイル情報 (TS セグメントファイル情報と作成された M3U8 インデックスファイル情報) は ApsaraVideo Live に保存されます。ファイル (TS セグメントファイルと M3U8 インデックスファイル) は OSS に保存されます。

  • OSS に保存されるファイルの保存期間は、OSS ストレージ設定によって決まります。

  • TS セグメントファイル情報は、ApsaraVideo Live システムに 3 か月間のみ保存されます。過去 3 か月間の録画コンテンツに対してのみ M3U8 インデックスファイルを作成できます。

  • M3U8 インデックスファイル情報は、ApsaraVideo Live システムに 6 か月間のみ保存されます。過去 6 か月以内に作成されたインデックスファイルの情報のみをクエリできます。

  • トランスコーディング済みストリームをマージまたは取得するには、StreamName を StreamName_トランスコーディングテンプレート ID の形式に設定する必要があります。

  • <OssBucket> はライブセンターと同じリージョンにある必要があります。そうでない場合、ドメイン名で作成された M3U8 インデックスファイル情報をクエリできません。

関連 API 操作

録画の管理

録画の表示

ApsaraVideo Live は、録画を表示するための 3 つの方法を提供します。

方法 1:コンソールを使用

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

  2. 左側のナビゲーションウィンドウで、機能管理 > ライブストリームのレコーディング に移動します。ライブストリームのレコーディング ページで、録画 タブをクリックします。

  3. 設定するストリーミングドメインを選択します。

  4. OSS タブをクリックします。

    image

方法 2:API を使用

DescribeLiveStreamRecordIndexFiles - 指定された期間内のすべてのインデックスファイルのクエリ API を呼び出すことができます。次のサンプルコードに例を示します。

// このファイルは自動生成されたものです。編集しないでください。
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 DescribeLiveStreamRecordIndexFiles {
    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());

        // クライアントを設定します。
        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.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // API リクエストのパラメーター設定
        DescribeLiveStreamRecordIndexFilesRequest describeLiveStreamRecordIndexFilesRequest = DescribeLiveStreamRecordIndexFilesRequest.builder()
                .domainName("<Your DomainName>")
                .appName("<Your AppName>")
                .streamName("<Your StreamName>")
                .startTime("<Your StartTime>")
                .endTime("<Your EndTime>")
                .order("<Your Order>")
                // リクエストレベルの設定を上書きします。Http リクエストパラメーターなどを設定できます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // API リクエストの戻り値を非同期で取得します。
        CompletableFuture<DescribeLiveStreamRecordIndexFilesResponse> response = client.describeLiveStreamRecordIndexFiles(describeLiveStreamRecordIndexFilesRequest);
        // API リクエストの戻り値を同期で取得します。
        DescribeLiveStreamRecordIndexFilesResponse 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();
    }

}
重要
  • 過去 6 か月以内のデータをクエリできます。

  • EndTime と StartTime の形式は yyyy-MM-ddTHH:mm:ssZ (UTC) です。間隔は 4 日を超えることはできません。

方法 3:OSS を使用

ライブストリーミング録画機能を設定する際、OSS での録画のストレージの場所を指定する必要があります。OSS で録画を表示するには、「OSS のファイルを一覧表示する」をご参照ください。

録画の削除

ApsaraVideo Live は、AppName、StreamName、OSS ファイルストレージパスなどの録画情報を保存します。実際の [ファイル] は OSS に保存されます。録画を削除する際に OSS のファイルも削除したい場合は、AliyunMTSVideoLifecycleRole サービスロールを作成し、AliyunMTSVideoLifecycleRolePolicy システムポリシーをこのロールに Input and Attach する必要があります。

詳細な権限付与プロセス

ApsaraVideo Live コンソールで録画を削除する前に、権限を付与する必要があります。RAM コンソールで RAM ロールを作成して権限を付与し、その後 ApsaraVideo Live コンソールにログインして録画を削除します。

サービスロールの作成

  1. RAM 管理者として RAM コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、アイデンティティ > ロール を選択します。

  3. ロール ページで、ロールの作成 をクリックします。

    image

  4. ロールの作成 ページで、[プリンシパルタイプ][クラウドサービス] に設定します。次に、信頼できるサービスを選択し、[OK] をクリックします。

    image

    説明

    [プリンシパル名] ドロップダウンリストから、ApsaraVideo Media Processing を選択します。

  5. [ロールの作成] ダイアログボックスで、[ロール名] フィールドに「AliyunMTSVideoLifecycleRole」と入力し、[OK] をクリックします。image

  6. ロールが作成された後、その [基本情報] ページで、[権限] タブをクリックします。

  7. [正確な権限]クリックします。 次のようにパラメーターを設定します。

    • ポリシータイプ:システムポリシー

    • ポリシー名:AliyunMTSVideoLifecycleRolePolicy

    設定が完了したら、[OK] をクリックします。image

録画を削除するには 3 つの方法があります。

方法 1:コンソールを使用

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

  2. 左側のナビゲーションウィンドウで、録画 を選択します。

  3. 削除する録画のドメイン名を選択します。

  4. OSS タブをクリックし、[削除] を選択します。

    删除录制文件

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

    同期削除オプションはデフォルトでは選択されていません。このオプションを選択すると、ApsaraVideo Live コンソールの録画メタデータと同時に OSS の録画ファイルが削除されます。确定删除

方法 2:API を使用

ライブストリーム録画ファイルの削除 API を呼び出すことができます。以下は SDK のコード例です。

// このファイルは自動生成されたものです。編集しないでください。
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 DeleteLiveStreamRecordIndexFiles {
    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());

        // クライアントを設定します。
        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.aliyun.com/product/live をご参照ください。
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();

        // API リクエストのパラメーター設定
        DeleteLiveStreamRecordIndexFilesRequest deleteLiveStreamRecordIndexFilesRequest = DeleteLiveStreamRecordIndexFilesRequest.builder()
                .regionId("<Your RegionId>")
                .recordId(java.util.Arrays.asList(
                    "<Your RecordId_1>"
                ))
                .domainName("<Your DomainName>")
                .appName("<Your AppName>")
                .streamName("<Your StreamName>")
                .removeFile("<Your RemoveFile>")
                // リクエストレベルの設定を上書きします。Http リクエストパラメーターなどを設定できます。
                // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                .build();

        // API リクエストの戻り値を非同期で取得します。
        CompletableFuture<DeleteLiveStreamRecordIndexFilesResponse> response = client.deleteLiveStreamRecordIndexFiles(deleteLiveStreamRecordIndexFilesRequest);
        // API リクエストの戻り値を同期で取得します。
        DeleteLiveStreamRecordIndexFilesResponse 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();
    }

}
重要
  • <recordId> はマニフェスト ID です。マニフェスト ID を取得するには、「録画の表示」をご参照ください。

方法 3:OSS での削除

ほとんどの場合、OSS に保存されている録画ファイルを直接削除することはお勧めしません。OSS に保存されている録画ファイルを削除したい場合は、ApsaraVideo Live コンソールで録画を削除する際に「OSS に保存されている録画ファイルも削除する」オプションを選択できます。業務上の理由で OSS に保存されている録画ファイルを直接削除する必要がある場合は、「OSS からファイルを削除する」をご参照ください。

その他のファイル削除方法

メディアリソースは OSS バケットに保存されるため、録画を削除するにはアクセス権限を付与する必要があります。クリックして承認することで、ワンクリックで権限を付与できます。

6 か月以上経過したファイルの削除:過去 6 か月以内の録画の情報のみをクエリできます。古いファイルを削除するには、OSS を使用する必要があります。詳細については、「OSS のファイルを削除する」をご参照ください。

期限切れの録画の削除:権限を付与した後、チケットを送信してください。その後、必要な有効期限を設定します。チケットの送信方法については、「お問い合わせ」をご参照ください。有効期間が設定されると、ApsaraVideo Live は OSS に保存されている期限切れの録画ファイルを自動的に削除できます。

説明

クラウドリソースへのアクセスを承認すると、ApsaraVideo Live が使用するシステム作成のロールにクラウドリソースへのアクセス権限が付与されます。承認後に誤ってロールを削除した場合は、再度権限を付与できます。

CDN 高速化ドメイン名の設定

録画したライブストリーム動画をネットワーク全体でより高速に配信したい場合は、CDN 高速化ドメイン名を設定できます。CDN は動画をさまざまな場所のノードに配信します。これにより、ユーザーは OSS オリジンに接続する代わりに、最寄りのノードからコンテンツにアクセスできます。この方法は、エッジユーザーのアクセス速度とエクスペリエンスを向上させるだけでなく、直接 OSS アクセスと比較してアウトバウンドトラフィックコストを最大 50% 削減し、ネットワークコストを効果的に節約します。詳細については、「CDN を使用した OSS へのアクセスの高速化」をご参照ください。

関連ドキュメント

ライブストリーミング録画の使用中に問題が発生した場合は、「ライブストリーミング録画に関するよくある質問」をご参照ください。

Java SDK を使用するには、「Java SDK の使用手順」をご参照ください。

録画コールバックの詳細については、「ライブストリーミング録画コールバック」および「オンデマンド録画コールバック」をご参照ください。