Menemukan aset media tertentu bisa menjadi tantangan ketika pustaka Anda berisi banyak file audio, video, dan gambar. ApsaraVideo VOD (VOD) menyediakan fitur pencarian media yang andal untuk mencari, memfilter, dan mengurutkan aset berdasarkan berbagai dimensi. Anda dapat menggunakan Konsol, API, atau SDK guna mengambil aset media yang dibutuhkan secara efisien dan akurat dari set data besar.
Skenario 1: Pencarian menggunakan konsol
Untuk mencari informasi audio atau video, ikuti langkah-langkah berikut:
Masuk ke ApsaraVideo VOD console.
Pada panel navigasi kiri, pilih Media Files > Audio/Video untuk membuka halaman manajemen Audio/Video.
Gunakan fitur filter dan pencarian di bagian atas halaman untuk menemukan aset media.

Pencarian: Mendukung pencarian fuzzy untuk Video Title dan pencocokan eksak untuk Media ID dan Tag Name.
Filter: Mendukung pemfilteran file audio dan video berdasarkan Address, Type, Category, Status, Source, dan Storage Class. Anda juga dapat mengurutkan hasil berdasarkan Created At secara menaik atau menurun.
Skenario 2: Pencarian aset media menggunakan API atau SDK
Gunakan kit pengembangan perangkat lunak (SDK) sisi server untuk memanggil API guna mencari informasi aset media. Untuk informasi selengkapnya, lihat VOD SDKs.
Gunakan operasi SearchMedia untuk mengintegrasikan kemampuan pencarian ke dalam sistem bisnis Anda dan mengotomatiskan pengambilan aset media. Anda dapat memfilter aset media berdasarkan bidang seperti VideoId, CateId, StorageLocation, Title, dan Tags. Untuk informasi selengkapnya, lihat Protocol for media asset search. Contoh kode berikut disediakan:
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) {
// Inisialisasi client.
DefaultProfile profile = DefaultProfile.getProfile(
"cn-shanghai", // ID wilayah.
"YOUR_ACCESS_KEY_ID", // ID AccessKey.
"YOUR_ACCESS_KEY_SECRET"// Rahasia AccessKey.
);
IAcsClient client = new DefaultAcsClient(profile);
// Bangun permintaan.
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("Terjadi kesalahan: " + e.getMessage());
e.printStackTrace();
}
}
}from aliyunsdkcore.client import AcsClient
from aliyunsdkvod.request.v20170321 import SearchMediaRequest
import json
# Inisialisasi client.
client = AcsClient(
'YOUR_ACCESS_KEY_ID',
'YOUR_ACCESS_KEY_SECRET',
'cn-shanghai'
)
# Bangun permintaan.
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"Terjadi kesalahan: {e}")Paginasi dan penelusuran data
Untuk memastikan performa kueri, pencarian media menyediakan dua mode paging.
Paging standar (untuk tampilan UI)
Gunakan parameter
PageNodanPageSizeuntuk mengambil data per halaman. Anda dapat mengambil hingga 5.000 catatan pertama dari hasil pencarian.Traversed berbasis scroll (untuk ekspor data)
Gunakan parameter
PageNodanPageSizeserta kursorScrollTokenuntuk traversed mendalam. Metode ini memungkinkan Anda mengambil semua hasil pencarian dalam segmen. Setiap segmen dibatasi maksimal 1.200 catatan. Contoh kode berikut disediakan:// Contoh traversed berbasis scroll String scrollToken = null; // SessionId harus tetap sama sepanjang traversed lengkap. String sessionId = java.util.UUID.randomUUID().toString(); List<SearchMediaResponse.Media> allMedia = new ArrayList<>(); do { SearchMediaRequest request = new SearchMediaRequest(); request.setPageSize(100); // Ambil hingga 100 catatan sekaligus. 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 kosong atau null menandakan bahwa semua data telah ditraversed. } while (scrollToken != null && !scrollToken.isEmpty());
Contoh pemanggilan API
Kode contoh pada bagian berikut menjelaskan pernyataan kueri yang digunakan untuk mengkueri informasi video.
Sebelum mengirim permintaan, Anda harus melakukan URL encoding pada parameter permintaan.
Tanda sama dengan (=), tanda kutip ganda ("), tanda kutip tunggal ('), dan tanda kurung yang digunakan dalam pernyataan harus berupa karakter single-byte.
Klasifikasi | Deskripsi |
Bidang yang dikembalikan | Operasi pencarian media mengembalikan informasi dasar aset media secara default. Untuk mendapatkan informasi tambahan, tentukan parameter Contoh permintaan: |
Pencocokan eksak | Kueri informasi video dengan Contoh permintaan: |
Fuzzy match | Untuk mencari Atau, Anda dapat menulisnya sebagai Contoh permintaan: |
Kueri multi-nilai | Catatan: Jika bidang yang digunakan untuk kueri hanya mendukung pencarian fuzzy, hasil kueri juga dikembalikan berdasarkan pencarian fuzzy. Kueri untuk Contoh permintaan: |
Kueri rentang | Gunakan interval tertutup atau terbuka untuk menentukan rentang. Contoh permintaan: Jika Anda hanya menentukan waktu mulai atau akhir, biarkan nilai lainnya kosong. Misalnya, untuk mengkueri Contoh permintaan: |
Bidang pengurutan | Urutkan informasi aset media berdasarkan waktu pembuatan secara menurun: Contoh permintaan: |