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

ApsaraVideo Live:ライブストリームスナップショット

最終更新日:Jul 01, 2025

ApsaraVideo Live では、ライブストリーミング中にスナップショットをキャプチャできます。このトピックでは、スナップショット機能について詳しく説明します。

前提条件

Object Storage Service (OSS) がアクティブ化され、OSS バケットが作成されていること。 OSS バケットは、ライブストリーミング中にキャプチャされたスナップショットを保存するために使用されます。 詳細については、「OSS をアクティブ化する」および「バケットを作成する」をご参照ください。

重要

バケットは、ストリーミングドメインのライブセンターと同じリージョンに存在する必要があります。

スナップショットルール

  • スナップショットルールは、インジェストストリームの AppName パラメーターに基づいて設定されます。

    • アプリケーション名を指定すると、スナップショットルールは、アプリケーションのすべてのインジェストストリームに適用されます。

    • AppName パラメーターをアスタリスク (*) に設定すると、スナップショットルールは、ドメイン内のすべてのインジェストストリームに適用されます。

  • ApsaraVideo Live は、上書きモードとリアルタイムモードでのスナップショットのキャプチャをサポートしています。

    • 上書きモードでは、最新のスナップショットが既存のスナップショットを上書きします。

    • リアルタイムモードでは、各スナップショットは、前のスナップショットを上書きせずに保存されます。

    2 つのモードを同時に選択できます。少なくとも 1 つのモードを選択する必要があります。

  • ApsaraVideo Live は、JPG 形式でのみスナップショットのキャプチャをサポートしています。

スナップショット機能を使用する

説明

新しく設定または変更されたスナップショットテンプレートは、進行中のライブストリームには反映されません。 ストリームを再インジェストする必要があります。

機能を設定する

ApsaraVideo Live コンソールまたは API 操作でスナップショット機能を設定できます。

ApsaraVideo Live コンソール

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

  2. 左側のナビゲーションウィンドウで、[機能管理] > [スナップショット] を選択します。 [スナップショット] ページで、[スナップショット設定] タブをクリックします。

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

  4. 追加 をクリックします。

  5. スナップショットテンプレートを設定します。

    image

    次の表は、スナップショットテンプレートのパラメーターについて説明しています。

    パラメーター

    説明

    アプリケーション名

    アプリケーションの名前。 値は、インジェスト URL で指定されたアプリケーション名と同じである必要があります。 ドメイン名の下にあるすべてのアプリケーションのスナップショット設定を行う場合は、アスタリスク (*) を入力します。

    スナップショット間隔

    連続する 2 つのスナップショットの間隔。 単位: 秒。 有効値: 5 ~ 3600。

    ストレージの場所

    OSS でのスナップショットの保存場所。

    OSS バケットは、ストリーミングドメインのライブセンターと同じリージョンに存在する必要があります。

    ストレージモード

    2 つのストレージモードが利用可能です。 同時に選択できます。

    • 上書き: スナップショットは、スナップショット間隔に基づいて順番にキャプチャされます。 新しくキャプチャされたスナップショットは、前のスナップショットを上書きします。

    • 新規: スナップショットは、スナップショット間隔に基づいてキャプチャされ、連続した順序で OSS に増分的に保存されます。

    2 つのモードを選択すると、スナップショットは両方の方法でキャプチャされます。

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

API

// プレースホルダーを実際の値に置き換えます。
DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
IAcsClient client = new DefaultAcsClient(profile);
AddLiveAppSnapshotConfigRequest addLiveAppSnapshotConfigRequest = new AddLiveAppSnapshotConfigRequest();
addLiveAppSnapshotConfigRequest.setDomainName("<DomainName>");
addLiveAppSnapshotConfigRequest.setAppName("<AppName>");
// スナップショットがキャプチャされる間隔。 有効値: 5 ~ 3600。
addLiveAppSnapshotConfigRequest.setTimeInterval(5);
addLiveAppSnapshotConfigRequest.setOssEndpoint("<Endpoint>");
addLiveAppSnapshotConfigRequest.setOssBucket("<BucketName>");
// 上書きモードでスナップショットがキャプチャされたときに生成される OSS オブジェクトの名前。 名前は 256 バイト未満である必要があります。 名前には、{AppName} や {StreamName} などの変数を含めることができます。
addLiveAppSnapshotConfigRequest.setOverwriteOssObject("<{AppName}/{StreamName}.jpg>");
// リアルタイムモードでスナップショットがキャプチャされたときに生成される OSS オブジェクトの名前。 名前は 256 バイト未満である必要があります。 名前には、{AppName}、{StreamName}、{UnixTimestamp}、{Sequence} などの変数を含めることができます。 {UnixTimestamp} と {Sequence} のいずれかを指定する必要があります。
addLiveAppSnapshotConfigRequest.setSequenceOssObject("<{AppName}/{StreamName}/{UnixTimestamp}.jpg>");
try {
    AddLiveAppSnapshotConfigResponse addLiveAppSnapshotConfigResponse = client.getAcsResponse(addLiveAppSnapshotConfigRequest);
    System.out.println(addLiveAppSnapshotConfigResponse.getRequestId());
    // 何かをする。
} catch (ServerException e) {
    // TODO 自動生成された catch ブロック
    e.printStackTrace();
} catch (ClientException e) {
    // TODO 自動生成された catch ブロック
    e.printStackTrace();
}          
説明
  • キャプチャされたスナップショットは、BucketName パラメーターで指定された OSS バケットに保存されます。 上書きモードとリアルタイムモードのストレージパスを同時に設定すると、スナップショットは両方の方法で生成されます。 上書きモードでキャプチャされたスナップショットのパスは <{AppName}/{StreamName}.jpg> です。 リアルタイムモードでキャプチャされたスナップショットのパスは <{AppName}/{StreamName}/{UnixTimestamp}.jpg> です。

  • 上書きモードとリアルタイムモードの違いについては、このトピックの スナップショットルール セクションを参照してください。

  • API パラメーターの詳細については、「AddLiveAppSnapshotConfig」をご参照ください。

スナップショットを管理する

スナップショットを表示する

ApsaraVideo Live コンソールを使用するか、API 操作を呼び出すか、OSS バケット内のオブジェクトを一覧表示して、キャプチャされたスナップショットを表示できます。

ApsaraVideo Live コンソール

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

  2. 左側のナビゲーションウィンドウで、[機能管理] > [スナップショット] を選択します。 [スナップショット] ページで、[スナップショット管理] タブをクリックします。

  3. ストリーミングドメインを選択します。 表示されるページで、日付を指定し、アプリケーション名とストリーム名を入力します。

  4. [検索] をクリックして、指定した日付にキャプチャされたスナップショットを表示します。 スナップショットが表示されない場合は、OSS バケットのアクセス制御リスト (ACL) が パブリック読み取り に設定されているかどうかを確認します。 詳細については、「バケット ACL」をご参照ください。

    image

  5. スナップショットの上にポインターを移動して、スナップショットを拡大するか、URL をコピーします。

API

// プレースホルダーを実際の値に置き換えます。
DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
IAcsClient client = new DefaultAcsClient(profile);
DescribeLiveStreamSnapshotInfoRequest describeLiveStreamSnapshotInfoRequest=new DescribeLiveStreamSnapshotInfoRequest();
describeLiveStreamSnapshotInfoRequest.setAppName("<AppName>");
describeLiveStreamSnapshotInfoRequest.setStreamName("<StreamName>");
describeLiveStreamSnapshotInfoRequest.setDomainName("<DomainName>");
// クエリする時間範囲の開始。 時刻は、ISO 8601 標準の yyyy-MM-ddTHH:mm:ssZ 形式に従い、UTC で表示されます。
describeLiveStreamSnapshotInfoRequest.setStartTime("<StartTime>");
// クエリする時間範囲の終了。 時刻は、ISO 8601 標準の yyyy-MM-ddTHH:mm:ssZ 形式に従い、UTC で表示されます。 StartTime パラメーターと EndTime パラメーターで指定された期間は、1 日を超えることはできません。
describeLiveStreamSnapshotInfoRequest.setEndTime("<EndTime>");
DescribeLiveStreamSnapshotInfoResponse describeLiveStreamSnapshotInfoResponse = null;
try {
    describeLiveStreamSnapshotInfoResponse = client.getAcsResponse(describeLiveStreamSnapshotInfoRequest);
} catch (ClientException e) {
    e.printStackTrace();
}
System.out.println(new Gson().toJson(describeLiveStreamSnapshotInfoResponse));
重要
  • 1 年以内にキャプチャされたスナップショットのみをクエリできます。 クエリする期間は 24 時間を超えることはできません。

  • API を呼び出して、リアルタイムモードでキャプチャされたスナップショットのみをクエリできます。 上書きモードでキャプチャされたスナップショットを表示するには、OSS バケット内のオブジェクトを一覧表示します。 詳細については、「オブジェクトを一覧表示する」をご参照ください。

  • API はページクエリをサポートしておらず、一度に最大 100 エントリを返すことができます。 デフォルトでは、10 エントリが返されます。

  • API パラメーターの詳細については、「DescribeLiveStreamSnapshotInfo」をご参照ください。

OSS

指定された OSS バケットに保存されているスナップショットを表示するには、OSS が提供するメソッドを使用できます。 詳細については、「オブジェクトを一覧表示する」をご参照ください。

スナップショットを削除する

ApsaraVideo Live は、AppName、StreamName、OSS ストレージパスなど、スナップショットファイルに関する情報のみを保存します。 ファイルは OSS に保存されます。 ApsaraVideo Live からスナップショット情報を削除するときに OSS からファイルを削除するには、最初に AliyunMTSVideoLifecycleRole ロールを作成し、AliyunMTSVideoLifecycleRolePolicy ポリシーをロールにアタッチする必要があります。

承認プロセス

サービスロールを作成する

  1. 管理権限を持つ RAM ユーザーとして RAM コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[ID] > [ロール] を選択します。

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

    image

  4. [ロールの作成] ページで、[プリンシパルタイプ][クラウドサービス] に設定し、[プリンシパル名][ApsaraVideo Media Processing] に設定して、[OK] をクリックします。

    image

  5. [ロールの作成] ダイアログボックスで、[ロール名]AliyunMTSVideoLifecycleRole に設定し、[OK] をクリックします。image

  6. ロールの詳細ページで、[権限] タブの [詳細な権限] をクリックします。

  7. 次のパラメーターを設定します。

    • タイプ [システムポリシー] に設定します。

    • AliyunMTSVideoLifecycleRolePolicy[ポリシー名] フィールドに入力します。

    [OK] をクリックします。image

ApsaraVideo Live コンソール、API 操作、または OSS でサポートされている他のメソッドを使用して、スナップショットを削除できます。

ApsaraVideo Live コンソール

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

  2. 左側のナビゲーションウィンドウで、[機能管理] > [スナップショット] を選択します。 [スナップショット] ページで、[スナップショット管理] タブをクリックします。

  3. ストリーミングドメインを選択します。 表示されるページで、日付を指定し、アプリケーション名とストリーム名を入力します。

  4. スナップショットの上にポインターを移動し、[削除] をクリックしてスナップショットを削除します。

    複数スナップショットを選択し、[一括削除] をクリックして一度に削除します。 最大 200 個のスナップショットを選択できます。

API

// プレースホルダーを実際の値に置き換えます。
DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
IAcsClient client = new DefaultAcsClient(profile);        
DeleteSnapshotFilesRequest deleteSnapshotFilesRequest=new DeleteSnapshotFilesRequest();
deleteSnapshotFilesRequest.setAppName("<AppName>");
deleteSnapshotFilesRequest.setStreamName("<StreamName>");
deleteSnapshotFilesRequest.setDomainName("<DomainName>");
// OSS に保存されている対応するスナップショットを削除するかどうかを指定します。
deleteSnapshotFilesRequest.setRemoveFile(true);
List<Long> createTimestampLists=new ArrayList<>();
// 削除するスナップショットのタイムスタンプを指定します。
// createTimestampLists.add(<Timestamp>);
deleteSnapshotFilesRequest.setCreateTimestampLists(createTimestampLists);
DeleteSnapshotFilesResponse deleteSnapshotFilesResponse= null;
try {
    deleteSnapshotFilesResponse = client.getAcsResponse(deleteSnapshotFilesRequest);
} catch (ClientException e) {
    e.printStackTrace();
}
System.out.println(new Gson().toJson(deleteSnapshotFilesResponse));
重要
  • この API 操作は、1 年以内にリアルタイムモードでキャプチャされたスナップショットのみの削除をサポートしています。 上書きモードでキャプチャされたスナップショットを削除するには、「オブジェクトを削除する」をご参照ください。

  • スナップショットをクエリして、対応するタイムスタンプを取得できます。 詳細については、このトピックの スナップショットを表示する を参照してください。

  • API パラメーターの詳細については、「DeleteSnapshotFiles」をご参照ください。

この機能のイベントリスナーを追加して、スナップショットがキャプチャされるたびにコールバックを受信できます。これには、スナップショットに関する詳細情報が含まれます。 業務システムにスナップショット情報とタイムスタンプを保存できます。これにより、タイムスタンプをクエリし、削除するスナップショットを特定できます。 たとえば、指定した月数より古いスナップショットを毎日クエリして削除するスケジュールされたタスクのシステムポリシーを設定できます。 詳細については、「ライブストリームスナップショットのコールバック」をご参照ください。

OSS

OSS からスナップショットを直接削除することはお勧めしません。 ApsaraVideo Live からスナップショット情報を削除するときに、ファイルの削除を同期できます。 業務で OSS での直接削除が必要な場合は、「オブジェクトを削除する」をご参照ください。

参考資料

Java 用サーバー SDK の使用方法については、「Java 用サーバー SDK を使用する」をご参照ください。

スナップショット機能に関連する API については、「スナップショットの API リファレンス」をご参照ください。