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

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

最終更新日:Dec 05, 2024

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つのストレージモードが利用可能です。 あなたは同時にそれらを選択することができます。

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

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

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

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

API

// Replace the placeholders with actual values.
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>");
// The interval at which snapshots are captured. Valid values: 5 to 3600.
addLiveAppSnapshotConfigRequest.setTimeInterval(5);
addLiveAppSnapshotConfigRequest.setOssEndpoint("<Endpoint>");
addLiveAppSnapshotConfigRequest.setOssBucket("<BucketName>");
// The name of the OSS object to be generated when a snapshot is captured in overwrite mode. The name must be less than 256 bytes in length. The name can contain variables, such as {AppName} and {StreamName}.
addLiveAppSnapshotConfigRequest.setOverwriteOssObject("<{AppName}/{StreamName}.jpg>");
// The name of the OSS object to be generated when a snapshot is captured in real-time mode. The name must be less than 256 bytes in length. The name can contain variables, such as {AppName}, {StreamName}, {UnixTimestamp}, and {Sequence}. You must specify one of {UnixTimestamp} and {Sequence}.
addLiveAppSnapshotConfigRequest.setSequenceOssObject("<{AppName}/{StreamName}/{UnixTimestamp}.jpg>");
try {
    AddLiveAppSnapshotConfigResponse addLiveAppSnapshotConfigResponse = client.getAcsResponse(addLiveAppSnapshotConfigRequest);
    System.out.println(addLiveAppSnapshotConfigResponse.getRequestId());
    // todo something.
} catch (ServerException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (ClientException e) {
    // TODO Auto-generated catch block
    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

// Replace the placeholders with actual values.
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>");
// The beginning of the time range to query. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format and is displayed in UTC.
describeLiveStreamSnapshotInfoRequest.setStartTime("<StartTime>");
// The end of the time range to query. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format and is displayed in UTC. The duration specified by the StartTime and EndTime parameters cannot exceed one day. 
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. Alibaba CloudアカウントでRAMコンソールにログインします。

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

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

  4. [ロールタイプの選択] ステップで、信頼できるエンティティのタイプとして [Alibaba Cloud Service] を選択します。 次に、[次へ] をクリックします。image

  5. [ロールの設定] ステップで、次のパラメーターを設定します。

    • [ロールタイプ][通常のサービスロール] に設定します。

    • [RAMロール名] フィールドにAliyunMTSVideoLifecycleRoleを入力します。

    • (オプション) 必要に応じて、メモフィールドにコンテンツを入力します。

    • [信頼できるサービスの選択] ドロップダウンリストから [メディアトランスコーディングサービス] を選択します。

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

  6. 仕上げステップで、入力と添付をクリックします。 ロールの詳細ページで、[正確な権限] をクリックします。

  7. [正確な権限] パネルで、次のパラメーターを設定します。

    • Typeシステムポリシーに設定します。

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

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

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

ApsaraVideo Liveコンソール

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

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

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

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

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

API

// Replace the placeholders with actual values. 
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>");
// Specify whether to delete the corresponding snapshots stored in OSS.
deleteSnapshotFilesRequest.setRemoveFile(true);
List<Long> createTimestampLists=new ArrayList<>();
// Specify the timestamp of the snapshot that you want to delete.
// 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リファレンス」をご参照ください。