ご利用のライブラリに多数の音声、動画、画像ファイルが含まれている場合、特定のメディアアセットを特定するのは困難です。ApsaraVideo VOD (VOD) では、複数のディメンションにわたってアセットを検索・フィルター・ソートできる強力なメディア検索機能を提供しています。コンソールまたは API や SDK を使用して、大規模なデータセットから必要なメディアアセットを効率的かつ正確に取得できます。
シナリオ 1:コンソールを使用した検索
音声または動画情報を検索するには、次の手順を実行します。
ApsaraVideo VOD コンソールにログインします。
左側のナビゲーションウィンドウで、メディアファイル > 音声/動画 を選択し、音声/動画管理ページに移動します。
ページ上部のフィルターおよび検索機能を使用して、メディアアセットを特定します。

検索:メディア名についてはあいまい検索を、メディア IDおよびタグ名については完全一致検索をサポートしています。
フィルター:音声および動画ファイルをストレージアドレス、タイプ、分類、ステータス、ソース、およびストレージクラスでフィルターできます。また、結果を作成日時で昇順または降順にソートすることも可能です。
シナリオ 2:API または SDK を使用したメディアアセットの検索
API を呼び出してメディアアセット情報を検索するには、サーバー側のソフトウェア開発キット(SDK)を使用します。詳細については、「VOD SDK」をご参照ください。
SearchMedia 操作を使用して、検索機能を業務システムに統合し、メディアアセットの取得を自動化できます。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 エンコーディングを実行する必要があります。
クエリ文で使用される等号(=)、二重引用符(")、一重引用符(')、および括弧は、すべて半角文字である必要があります。
分類 | 説明 |
返却フィールド | メディア検索操作では、デフォルトで基本的なメディアアセット情報が返されます。追加情報を取得するには、 リクエスト例: |
完全一致 |
リクエスト例: |
あいまい一致 |
または、次のように記述することも可能です。 リクエスト例: |
複数値クエリ | 注:クエリに使用するフィールドがあいまい一致のみをサポートしている場合、クエリ結果もあいまい一致に基づいて返されます。
リクエスト例: |
範囲クエリ | 閉区間または開区間を使用して範囲を指定します。 リクエスト例: 開始時間または終了時間のいずれか一方のみを指定する場合は、もう一方の値を空にしてください。たとえば、 リクエスト例: |
ソートフィールド | 作成日時を基準に、メディアアセット情報を新しい順にソートします。 リクエスト例: |