Lorsque votre bibliothèque multimédia contient une vaste collection de fichiers audio, vidéo et images, il devient difficile de localiser rapidement une ressource spécifique. La fonctionnalité de recherche de ressources multimédias d'ApsaraVideo VOD offre des capacités puissantes de recherche multidimensionnelle, de filtrage et de tri. Elle vous permet de récupérer efficacement les ressources multimédias dont vous avez besoin au sein de jeux de données massifs, que ce soit via la console ou les API/SDK.
Scénario 1 : Recherche dans la console
Suivez ces étapes pour rechercher des ressources audio ou vidéo :
Connectez-vous à la console ApsaraVideo VOD.
Dans le volet de navigation de gauche, choisissez Media Files > Audio/Video.
-
Utilisez les fonctionnalités de filtre et de recherche situées en haut de la page pour trouver des ressources multimédias.
Recherche : prend en charge la recherche floue par Video Title et la recherche exacte par Media ID ou Tag Name.
Filtre : permet de filtrer les fichiers audio/vidéo par Address, Type, Category, Status, Source et storage type. Vous pouvez également trier les résultats par Created At dans l'ordre croissant ou décroissant.
Scénario 2 : Recherche à l'aide des API et des SDK
Nous vous recommandons d'utiliser un SDK côté serveur pour rechercher des ressources multimédias. Pour plus d'informations, consultez les instructions d'utilisation du SDK VOD.
L'opération API SearchMedia vous permet d'intégrer des fonctionnalités de recherche dans vos systèmes métier. Les champs filtrables incluent VideoId, CateId, StorageLocation, Title, Tags et bien d'autres. Pour plus de détails, consultez le protocole de recherche de ressources multimédias. Le code suivant fournit des exemples :
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) {
// Initialize the client.
DefaultProfile profile = DefaultProfile.getProfile(
"cn-shanghai", // The region ID.
"YOUR_ACCESS_KEY_ID", // Your AccessKey ID.
"YOUR_ACCESS_KEY_SECRET"// Your AccessKey secret.
);
IAcsClient client = new DefaultAcsClient(profile);
// Build the request.
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
# Initialize the client.
client = AcsClient(
'YOUR_ACCESS_KEY_ID',
'YOUR_ACCESS_KEY_SECRET',
'cn-shanghai'
)
# Build the request.
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}")Pagination et parcours des données
Pour garantir les performances des requêtes, la recherche de ressources multimédias propose deux modes de pagination.
-
Pagination standard (pour l'affichage dans l'interface utilisateur)
Utilisez les paramètres de pagination
PageNoetPageSizepour récupérer les données page par page. Cette méthode permet d'accéder uniquement aux 5 000 premiers résultats. -
Défilement (pour l'exportation des données)
Utilisez les paramètres de pagination
PageNoetPageSizeainsi que le jeton de défilementScrollTokenpour parcourir l'ensemble des résultats. Cette méthode récupère les résultats par segments pouvant contenir jusqu'à 1 200 enregistrements chacun. Le code suivant fournit un exemple :// Scrolling example String scrollToken = null; // The SessionId must remain unchanged throughout a complete traversal. String sessionId = java.util.UUID.randomUUID().toString(); List<SearchMediaResponse.Media> allMedia = new ArrayList<>(); do { SearchMediaRequest request = new SearchMediaRequest(); request.setPageSize(100); // Retrieve up to 100 records at a time. 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(); // If the returned scrollToken is null or empty, all data has been traversed. } while (scrollToken != null && !scrollToken.isEmpty());
Exemples d'appels d'API
Les exemples de code de la section suivante décrivent les instructions de requête utilisées pour interroger les informations vidéo.
Avant d'envoyer une requête, encodez les paramètres de la requête au format URL.
Les signes égal (=), les guillemets doubles ("), les guillemets simples (') et les parenthèses utilisés dans l'instruction doivent être des caractères mono-octet.
Élément | Description |
Champ de retour |
Par défaut, l'opération API SearchMedia renvoie les informations de base d'une ressource multimédia. Pour inclure des informations supplémentaires, spécifiez le paramètre
Exemple de requête :
|
Correspondance exacte |
Pour rechercher des ressources multimédias dont le
Exemple de requête :
|
Correspondance floue |
Si
ou
Exemple de requête :
|
Requête multi-valeurs |
Remarque : si les champs utilisés pour la requête ne prennent en charge que la correspondance floue, les résultats de la requête sont également renvoyés sur la base d'une correspondance floue. Pour rechercher des ressources multimédias dont le
Exemple de requête :
|
Requête de plage |
Pour rechercher des ressources multimédias dont le
Exemple de requête :
Si vous spécifiez uniquement une limite gauche ou droite, laissez la valeur de l'autre limite vide. Par exemple, spécifiez que
Exemple de requête :
|
Champ de tri | Triez les informations sur les ressources multimédias par ordre chronologique inverse en fonction de l'heure de création : Exemple de requête : |