Une capture d'image vidéo (snapshot) est une image extraite d'une vidéo à un instant et dans des dimensions spécifiés. Les captures servent à créer des ressources telles que les vignettes de couverture, les sprites et les miniatures des barres de progression des lecteurs. Cette rubrique explique comment soumettre une tâche de capture dans ApsaraVideo Media Processing (MPS).
Présentation
Cas d'utilisation
Vignettes de couverture : sélectionnez la première image d'une courte vidéo dans un flux en tant que vignette, ou capturez une image à un instant précis pour l'utiliser comme couverture.
Aperçus vidéo : créez des miniatures à partir du contenu de votre vidéo. Lorsqu'un utilisateur survole la timeline du lecteur, celui-ci affiche une miniature statique correspondant à cet instant. Cela permet aux utilisateurs de parcourir rapidement le contenu vidéo et d'accéder directement aux sections qui les intéressent.
Modération vidéo : échantillonnez le contenu vidéo en prenant des captures pour un examen manuel ou automatisé.
Fonctionnalités
Fonctionnalité | Description | Paramètres API associés | Opération dans la console |
Capture statique | Prend des captures JPG de taille spécifiée à des instants précis d'une vidéo. Les méthodes d'échantillonnage suivantes sont disponibles :
| SnapshotConfig | Prise en charge |
Capture Sprite | Assemble les captures statiques en une seule grande image (sprite) selon des règles de mise en page. La sortie est au format JPG. Prend en charge uniquement les appels asynchrones. Une seule requête de sprite récupère plusieurs images, réduisant ainsi le nombre de requêtes et améliorant les performances du client. | TileOut, TileOutputFile | Non pris en charge |
Capture WebVTT | Génère un fichier VTT pour les captures statiques ou un sprite, contenant les horodatages, les URL des fichiers et les informations de coordonnées. Pour afficher une image, vous devez d'abord récupérer et analyser le fichier VTT. Utile pour les miniatures de la barre de progression du lecteur. | SubOut | Prise en charge |
Capture d'image clé | Cette fonctionnalité prend des captures uniquement sur les images clés. Si un point temporel spécifié n'est pas une image clé, le service utilise l'image clé la plus proche. | FrameType | Prise en charge |
Détection d'écran noir sur la première image | Vous pouvez activer la détection d'écran noir pour la première image (time=0). Un écran noir est défini par le pourcentage de pixels noirs et un seuil de valeur de couleur. Le service analyse les 5 premières secondes : si une image non noire est trouvée, elle est capturée. Sinon, une tâche de capture unique échoue ; une tâche de capture multiple capture la première image noire. | BlackLevel, PixelBlackThreshold | Prise en charge |
Facturation
Les appels API sont facturés en fonction du nombre de captures générées. Pour plus d'informations, consultez Tarification des appels API.
Soumettre des tâches de capture dans la console
Dans la console MPS, vous ne pouvez soumettre des tâches de capture qu'en utilisant un workflow.
Connectez-vous à la console MPS.
Dans la barre de navigation supérieure, sélectionnez une région dans la liste déroulante.

Dans le volet de navigation de gauche, choisissez .
Cliquez sur Create Workflow.
Configurez le nœud Input selon vos besoins.
Ajoutez un nœud Snapshot. Cliquez sur l'icône + à droite du nœud Input et sélectionnez Snapshot dans le menu déroulant.
-
Cliquez sur l'icône de crayon à droite du nœud Snapshot pour configurer ses paramètres.
Paramètre
Obligatoire
Description
Snapshot Mode
Oui
-
Single : Capture une seule image à un instant précis.
-
Multiple : Capture des images à un intervalle défini.
-
Average : Capture un nombre spécifié d'images, réparties uniformément tout au long de la vidéo.
Intervalle de capture (secondes)
Obligatoire pour le mode « Multiple »
Saisissez l'intervalle entre les captures en secondes.
Snapshots
Obligatoire pour le mode « Average »
Saisissez le nombre de captures.
Remarque-
Si ce paramètre n'est pas défini, des captures sont prises à l'intervalle spécifié jusqu'à la fin de la vidéo.
-
Si le nombre de captures est supérieur à 1, des captures sont prises à l'intervalle spécifié jusqu'à ce que le nombre d'images requis soit atteint.
-
Si seul le nombre de captures est défini, les captures sont prises à un intervalle égal à Durée totale / Nombre de captures.
Name
Oui
Saisissez un nom pour ce nœud.
Output Path
Oui
Cliquez sur Select. Dans la liste déroulante Bucket, sélectionnez un bucket. La section Path affiche les dossiers créés dans le bucket. Sélectionnez un dossier comme chemin de sortie.
Remarque-
Format du chemin de capture unique :
http://bucket.oss-cn-hangzhou.aliyuncs.com/path/{RunId}/{SnapshotTime}.jpg. -
Format du chemin de capture multiple ou moyenne : nécessite l'espace réservé {Count}. Le chemin doit se terminer par
/{RunId}/{SnapshotTime}/{Count}.jpg.
Start Time
Non
Sélectionnez l'heure dans les listes déroulantes pour l'heure, la minute et la seconde.
Width x Height
Non
Saisissez les valeurs de largeur et de hauteur dans leurs zones de saisie respectives.
Remarque-
Si vous laissez la largeur et la hauteur vides, la résolution de la capture correspond à celle de la vidéo source.
-
Si vous définissez uniquement la largeur ou la hauteur, l'autre dimension est mise à l'échelle automatiquement pour conserver le rapport d'aspect original.
Generate WebVTT Index File
Facultatif pour les modes Multiple et Average
Activez cette option pour générer un fichier d'index WebVTT.
Set as Thumbnail
Non
Activez cette option pour définir l'image capturée comme couverture de la ressource multimédia dans la bibliothèque. Si plusieurs captures sont effectuées, la première capture est définie comme couverture par défaut.
Keyframe
Non
Activez cette option pour garantir que les captures soient prises uniquement sur les images clés. Si un point temporel spécifié n'est pas une image clé, la plus proche est utilisée à la place.
Black Screen Detection
Facultatif pour les modes Multiple et Average
Activez cette option pour détecter et ignorer les images noires au début de la vidéo. Si une image non noire est détectée dans les cinq premières secondes, MPS capture la première image non noire.
-
Cliquez sur OK pour terminer la configuration du nœud de capture.
-
Cliquez sur Save pour terminer la configuration du workflow.
RemarqueAprès la création du workflow, il se déclenche automatiquement lorsqu'un nouveau fichier répondant aux critères d'entrée est téléchargé vers le chemin spécifié. Pour plus d'informations sur le déclenchement d'un workflow, consultez Déclencher un workflow.
Soumettre des tâches de capture via l'API
Téléchargez une vidéo vers OSS.
-
Soumettez une tâche de capture. Appelez l'API SubmitSnapshotJob et configurez le paramètre SnapshotConfig pour soumettre des tâches de capture synchrone unique, asynchrone unique, de sprites ou WebVTT. Les sections suivantes présentent des exemples de la structure du paramètre SnapshotConfig. Pour plus d'informations, consultez Détails des paramètres.
Capture synchrone unique
// Capture one keyframe at 100 ms into the video. The output image width is 1280 px, and the height is adaptive. The image is saved in JPG format. // Synchronous mode does not support the Num or Interval parameters, nor does it support sprite or WebVTT output. { "Time":"100", "FrameType":"intra", "Width":"1280", "OutputFile":{ "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example.jpg" } }Capture asynchrone unique
// Capture one keyframe at the beginning of the video, with first-frame black screen detection enabled. The output image has the same dimensions as the source video and is saved in JPG format. { "Num":"1", "Time":"0", "FrameType":"intra", "BlackLevel":"100", "PixelBlackThreshold":"30", "OutputFile":{ "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example.jpg" } }Capture par échantillonnage
// Starting from the beginning of the video, capture one normal frame every 10 seconds for a maximum of 200 frames or until the video ends. // First-frame black screen detection is enabled. The output images have the same dimensions as the source video and are saved as example{Count}.jpg. { "Num":"200", "Time":"0", "Interval":"10", "FrameType":"normal", "BlackLevel":"100", "PixelBlackThreshold":"30", // To prevent files from being overwritten, you must use the {Count} placeholder in the OutputFile object for multiple snapshots. "OutputFile":{ "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example{Count}.jpg" } }Capture espacée uniformément
// Capture 200 normal frames, spaced evenly, from 100 ms to the end of the video. The output images are 1280 px wide and 720 px high. The images are saved as example{Count}.jpg. { "Num":"200", "Time":"100", "Interval":"0", "FrameType":"normal", "Width":"1280", "Height":"720", // To prevent files from being overwritten, you must use the {Count} placeholder in the OutputFile object for multiple snapshots. "OutputFile":{ "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example{Count}.jpg" } }Sprite
// Capture 200 normal frames, spaced evenly, from 100 ms to the end of the video. The output images are 1280 px wide and 720 px high. // The small images are stitched into a sprite with a 10x10 layout. The sprite is saved in example-bucket002, and the individual small images are saved in example-bucket001. { "Num":"200", "Time":"100", "Interval":"0", "FrameType":"normal", "Width":"1280", "Height":"720", // To prevent files from being overwritten, you must use the {Count} placeholder in the OutputFile object for multiple snapshots. "OutputFile":{ "Bucket":"example-bucket001", "Location":"oss-cn-hangzhou", "Object":"example{Count}.jpg" }, "TileOut":{ "Lines":10, "Columns":10, "Padding":"2", "Margin":"4", "Color":"black", "IsKeepCellPic":"true" }, // To prevent files from being overwritten, set OutputFile and TileOutputFile to different buckets or object paths. You must also use the {TileCount} placeholder in the TileOutputFile object for the sprite. "TileOutputFile":{ "Bucket":"example-bucket002", "Location":"oss-cn-hangzhou", "Object":"example{TileCount}.jpg" } }Capture WebVTT
// Capture 200 normal frames, spaced evenly, from 100 ms to the end of the video. The output images are 1280 px wide and 720 px high. A VTT file is generated. { "Num":"200", "Time":"100", "Interval":"0", "FrameType":"normal", "Width":"1280", "Height":"720", // To output a VTT file, the Object must have a .vtt extension. The corresponding image path is example/snapshot-tile-{Count}.jpg. "OutputFile": { "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example.vtt" }, "Format":"vtt", "SubOut":{ "IsSptFrag":"true" } } -
Pour une tâche de capture synchrone unique, l'API renvoie le résultat directement dans sa réponse. Pour les tâches asynchrones, vous devez configurer des notifications de message ou interroger activement les résultats.
RemarqueSi le fichier d'entrée est trop volumineux, la tâche peut expirer et échouer. Nous recommandons de mettre en œuvre un mécanisme de nouvelle tentative.
-
(Recommandé) Recevez des notifications de rappel.
Une fois une tâche asynchrone terminée, si des notifications de message sont configurées, le système envoie un message à la file d'attente ou au topic spécifié dans Simple Message Queue (anciennement MNS). Pour plus d'informations, consultez Recevoir des notifications de message.
-
Interrogez les résultats de la tâche.
Appelez l'API QuerySnapshotJobList pour interroger les résultats d'une ou plusieurs tâches de capture en spécifiant leurs ID. Vous pouvez également effectuer une requête paginée en filtrant les tâches en fonction de leur statut, de leur heure de création ou de la file d'attente MPS, sans spécifier les ID de tâche.
Soumettre des tâches de capture via le SDK
|**SDK**
|
**Guides**
| | --- | --- | |
Java SDK
|
[Capture](t11503.xdita#)
| |
Python SDK
|
[Capture](t11514.xdita#)
| |
PHP SDK
|
[Capture](t11525.xdita#)
| |
PHP SDK (nouvelle version)
|
[Capture](t2213510.xdita#)
| |
Node.js SDK
|
[Capture](t2058299.xdita#)
| |
Go SDK
|
[Capture](t2351331.xdita#)
|
FAQ
Pour les questions fréquemment posées sur les captures, consultez FAQ sur les captures.