メディアライブラリに大量のオーディオ、ビデオ、画像ファイルが保存されている場合、特定のアセットを迅速に見つけ出すことは困難になります。ApsaraVideo VOD のメディアアセット検索機能は、強力な多次元検索、フィルター、ソート機能を提供します。これにより、コンソールや API/SDK を使用して、膨大なデータセットから必要なメディアアセットを効率的に取得できます。
シナリオ 1:コンソールでの検索
オーディオまたはビデオアセットを検索するには、次の手順に従います。
-
ApsaraVideo VOD コンソールにログインします。
-
左側のナビゲーションウィンドウで、メディアファイル > [オーディオ/ビデオ] を選択します。
-
ページ上部のフィルター機能と検索機能を使用して、メディアアセットを検索します。
-
検索: メディア名 によるあいまい検索と、メディア ID または タグ名 による完全一致検索をサポートしています。
-
フィルター: オーディオ/ビデオ ファイルを ストレージアドレス、タイプ、分類、ステータス、ソース、および ストレージタイプ でフィルタリングできます。また、結果を 作成日時 で昇順または降順にソートすることもできます。
-
シナリオ 2:API と SDK を使用した検索
メディアアセットの検索には、サーバーサイド SDK の使用を推奨します。詳細については、「VOD SDK の使用方法」をご参照ください。
SearchMedia API オペレーションを使用すると、検索機能を業務システムに統合できます。フィルター可能なフィールドには、VideoId、CateId、StorageLocation、Title、Tags などがあります。詳細については、「メディアアセット検索のプロトコル」をご参照ください。以下にコード例を示します。
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.SearchMediaRequest;
import com.aliyuncs.vod.model.v20170321.SearchMediaResponse;
public class SearchMediaExample {
public static void main(String[] args) {
// クライアントを初期化します。
DefaultProfile profile = DefaultProfile.getProfile(
"cn-shanghai", // リージョン ID。
"YOUR_ACCESS_KEY_ID", // ご利用の AccessKey ID。
"YOUR_ACCESS_KEY_SECRET"// ご利用の AccessKey Secret。
);
IAcsClient client = new DefaultAcsClient(profile);
// リクエストを構築します。
SearchMediaRequest request = new SearchMediaRequest();
request.setMatch("Title='VOD' AND Status='Normal'");
request.setFields("Title,CoverURL,Duration,Size");
request.setSortBy("CreationTime:Desc");
request.setPageSize(20);
request.setPageNo(1);
try {
SearchMediaResponse response = client.getAcsResponse(request);
System.out.println("Total Records: " + response.getTotal());
for (SearchMediaResponse.Media media : response.getMediaList()) {
System.out.println("VideoId: " + media.getMediaId() + ", Title: " + media.getVideo().getTitle());
}
} catch (Exception e) {
System.err.println("An error occurred: " + e.getMessage());
e.printStackTrace();
}
}
}from aliyunsdkcore.client import AcsClient
from aliyunsdkvod.request.v20170321 import SearchMediaRequest
import json
# クライアントを初期化します。
client = AcsClient(
'YOUR_ACCESS_KEY_ID',
'YOUR_ACCESS_KEY_SECRET',
'cn-shanghai'
)
# リクエストを構築します。
request = SearchMediaRequest.SearchMediaRequest()
request.set_Match("Title='VOD' AND Status='Normal'")
request.set_Fields("Title,CoverURL,Duration,Size")
request.set_SortBy("CreationTime:Desc")
request.set_PageSize(20)
request.set_PageNo(1)
try:
response_str = client.do_action_with_exception(request)
response_data = json.loads(response_str)
print(f"Total Records: {response_data.get('Total')}")
for media in response_data.get('MediaList', {}).get('Media', []):
print(f"VideoId: {media.get('MediaId')}, Title: {media.get('Video', {}).get('Title')}")
except Exception as e:
print(f"An error occurred: {e}")ページネーションとデータ走査
クエリのパフォーマンスを確保するため、メディアアセット検索では 2 つのページネーションモードが提供されています。
-
標準ページネーション (UI 表示用)
PageNoとPageSizeのページネーションパラメーターを使用して、ページごとにデータを取得します。この方法では、最初の 5,000 件の結果にのみアクセスできます。 -
スクロール (データエクスポート用)
PageNoとPageSizeのページネーションパラメーター、およびScrollTokenスクロールトークンを使用して、すべての結果を走査します。この方法では、結果は最大 1,200 レコードずつのセグメントで取得されます。以下にコード例を示します。// スクロールの例 String scrollToken = null; // SessionId は、完全な走査の間、変更せずに維持する必要があります。 String sessionId = java.util.UUID.randomUUID().toString(); List<SearchMediaResponse.Media> allMedia = new ArrayList<>(); do { SearchMediaRequest request = new SearchMediaRequest(); request.setPageSize(100); // 一度に最大 100 件のレコードを取得します。 request.setSessionId(sessionId); if (scrollToken != null) { request.setScrollToken(scrollToken); } SearchMediaResponse response = client.getAcsResponse(request); if (response.getMediaList() != null) { allMedia.addAll(response.getMediaList()); } scrollToken = response.getScrollToken(); // 返された scrollToken が null または空の場合、すべてのデータが走査されたことを意味します。 } while (scrollToken != null && !scrollToken.isEmpty());
API 呼び出し例
次のセクションのサンプルコードでは、ビデオ情報のクエリに使用されるクエリ文について説明します。
リクエストを送信する前に、リクエストパラメーターに対して URL エンコーディングを実行する必要があります。
文で使用される等号 (=)、二重引用符 (")、単一引用符 (')、および括弧は、半角文字である必要があります。
項目 | 説明 |
返却フィールド |
デフォルトでは、SearchMedia API オペレーションはメディアアセットの基本情報を返します。追加情報を含めるには、
リクエスト例:
|
完全一致 |
リクエスト例:
|
あいまい一致 |
または
リクエスト例:
|
複数値クエリ |
注:クエリに使用されるフィールドがあいまい一致のみをサポートしている場合、クエリ結果もあいまい一致に基づいて返されます。
リクエスト例:
|
範囲クエリ |
リクエスト例:
左側または右側の境界のみを指定する場合は、もう一方の境界の値を空のままにします。例えば、
リクエスト例:
|
ソートフィールド | 作成時間に基づいてメディアアセット情報を逆時系列でソートするには: リクエスト例: |