このページは機械翻訳によるものです。内容の正確さは保証しておりません。 人力翻訳を依頼する

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

更新日時2025-04-01 17:29

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

Java
// プレースホルダーを実際の値に置き換えます。
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

Java
// プレースホルダーを実際の値に置き換えます。
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ポリシー名 フィールドに AliyunMTSVideoLifecycleRolePolicy と入力します。

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

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

ApsaraVideo Live コンソール

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

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

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

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

API

Java
// プレースホルダーを実際の値に置き換えます。
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 リファレンス」をご参照ください。

  • 目次 (1, M)
  • 前提条件
  • スナップショットルール
  • スナップショット機能を使用する
  • 機能の設定
  • スナップショットの管理
  • 標準サービスロールを作成する
  • 参考資料
フィードバック