Ce tutoriel vous guide dans la création de vidéos de compilation de visages avec Intelligent Media Services (IMS). Utilisez la recherche faciale pour localiser les clips d'une personne spécifique, puis produisez une compilation à l'aide de Script-to-Video, du montage sur timeline ou de modèles avancés.
Contexte
Une compilation de visages met en avant les apparitions d'une personne à travers plusieurs clips vidéo. Ce format est courant dans la production cinématographique, le journalisme et les réseaux sociaux. IMS automatise ce processus en combinant la recherche faciale avec des fonctionnalités de montage vidéo.
Cas d'utilisation
Cas d'utilisation 1 : Vidéos de temps forts sportifs
Les organisateurs d'événements sportifs créent des vidéos de temps forts qui capturent les moments clés, tels que les sprints ou les dépassements. Ces vidéos servent à la promotion de l'événement, aux récapitulatifs et à la notoriété des athlètes.
Cas d'utilisation 2 : Vidéos de souvenirs personnalisés pour les visiteurs
Les parcs d'attractions créent des compilations personnalisées capturant les visiteurs sur les manèges. Ces compilations servent de souvenirs ou de contenu pour les réseaux sociaux.
Cas d'utilisation 3 : Vidéos des coulisses d'événements
Les vidéastes de mariage compilent les images des coulisses et des voyages pour créer un highlight soigneusement sélectionné de l'histoire du couple.
Cas d'utilisation 4 : Compilations de fans
Les organisateurs de concerts compilent les réactions du public pour les afficher sur les écrans pendant l'événement ou les partager sur les réseaux sociaux.
D'autres applications incluent les mémoires personnels, les vidéos familiales, les promotions touristiques et les récapitulatifs d'événements d'entreprise.
Procédure
Prérequis
Installez le SDK côté serveur IMS. Consultez Préparations. Ignorez cette étape si le SDK est déjà installé.
Étape 1 : Trouver des clips vidéo à l'aide de la recherche faciale
Utilisez la recherche faciale IMS pour trouver des clips vidéo contenant une personne spécifique. Consultez Rechercher des visages dans un grand volume de ressources multimédias.
Étape 2 : Monter les clips vidéo
Les sections suivantes décrivent trois méthodes pour créer une vidéo de compilation de visages, ainsi que leurs fonctionnalités, procédures et exemples SDK.
Méthode 1 : Créer une vidéo à l'aide de Script-to-Video
Fonctionnalités
Pratique et efficace : Automatise la création de compilations de visages. Générez plusieurs vidéos par lot avec des configurations simples.
Facile à utiliser : Créez des vidéos de haute qualité en un clic, sans expérience en montage requise.
Implémenter à l'aide du SDK
Voir l'exemple de code
package com.example;
import java.util.*;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.ice20201109.Client;
import com.aliyun.ice20201109.models.*;
import com.aliyun.teaopenapi.models.Config;
/**
* You must add the following Maven dependencies:
* <dependency>
* <groupId>com.aliyun</groupId>
* <artifactId>ice20201109</artifactId>
* <version>2.3.0</version>
* </dependency>
* <dependency>
* <groupId>com.alibaba</groupId>
* <artifactId>fastjson</artifactId>
* <version>1.2.9</version>
* </dependency>
*/
public class SubmitFaceEditingJobService {
static final String regionId = "cn-shanghai";
static final String bucket = "<your-bucket>";
/*** Submit a one-click video creation job for a face compilation based on face search results. ****/
public static void submitBatchEditingJob(String mediaId, SearchMediaClipByFaceResponse response) throws Exception {
Client iceClient = initClient();
JSONArray intervals = buildIntervals(response);
JSONObject editingTimeline = buildEditingTimeline(mediaId, intervals);
String openingMediaId = "icepublic-9a2df29956582a68a59e244a5915228c";
String endingMediaId = "icepublic-1790626066bee650ac93bd12622a921c";
String mainGroupName = "main";
String openingGroupName = "opening";
String endingGroupName = "ending";
JSONObject inputConfig = buildInputConfig(mediaId, mainGroupName, openingMediaId, openingGroupName, endingMediaId, endingGroupName);
JSONObject editingConfig = buildEditingConfig(mediaId, mainGroupName, intervals, openingMediaId, openingGroupName, endingMediaId, endingGroupName);
JSONObject outputConfig = new JSONObject();
outputConfig.put("MediaURL", "https://ice-auto-test.oss-cn-shanghai.aliyuncs.com/testBatch/" + System.currentTimeMillis() + "{index}.mp4");
outputConfig.put("Width", 1280);
outputConfig.put("Height", 720);
outputConfig.put("FixedDuration", 18);
outputConfig.put("Count", 2);
SubmitBatchMediaProducingJobRequest request = new SubmitBatchMediaProducingJobRequest();
request.setInputConfig(inputConfig.toJSONString());
request.setEditingConfig(editingConfig.toJSONString());
request.setOutputConfig(outputConfig.toJSONString());
SubmitBatchMediaProducingJobResponse response = iceClient.submitBatchMediaProducingJob(request);
System.out.println("JobId: " + response.getBody().getJobId());
}
public Client initClient() throws Exception {
// An Alibaba Cloud account's AccessKey grants full access to all APIs. We recommend using a RAM user for API calls and daily operations.
// This example shows how to store your AccessKey ID and AccessKey Secret in environment variables. For more information, see https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-access-credentials.
com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
Config config = new Config();
config.setCredential(credentialClient);
// If you need to hard-code your AccessKey ID and AccessKey Secret, use the following code. However, we strongly recommend that you do not store your AccessKey ID and AccessKey Secret in your project code. This can lead to an AccessKey leak and compromise the security of all resources in your account.
// config.accessKeyId = "
Implémenter à l'aide de la console
Pour créer des vidéos dans la console, ignorez l'étape 1 et suivez ces étapes.
Étape 1 : Dans le volet de navigation de gauche de la console, cliquez sur Intelligent Batch Video Production. Dans l'onglet Script-to-Video, cliquez sur Create Task. Sélectionnez un generation mode. Les modes Global Scripts et Segmented Scripts mode sont pris en charge. Cet exemple utilise le mode Segmented Scripts mode.
Étape 2 : Dans la section Script Node Configuration, cliquez sur Add Material. Dans le panneau Add Material qui s'affiche, sélectionnez face search et téléchargez une image de visage pour trouver les correspondances
Étape 3 : Dans les résultats, cliquez sur View pour un résultat spécifique afin de voir les clips vidéo correspondants. Ensuite, cliquez sur Import Matched Clips puis sur OK. Les éléments correspondants sont alors ajoutés au nœud de script.
Étape 4 : Pour ajuster les clips vidéo trouvés par la recherche faciale, survolez l'élément et cliquez sur l'icône settings. Dans la boîte de dialogue qui s'affiche, vous pouvez ajuster les points d'entrée et de sortie dans la section Trimming. Ignorez cette étape si aucun ajustement n'est nécessaire.
Suivez la procédure standard de Script-to-Video pour configurer le title, la background music, les stickers and logos et les synthesis settings, puis soumettez la tâche.
Méthode 2 : Créer une vidéo à l'aide du montage sur timeline
Fonctionnalités
Contenu vidéo personnalisable : Contrôlez chaque point de montage, effet, transition et piste audio. Combinez et ajustez les éléments pour produire des vidéos uniques.
Grande flexibilité : Ajustez le plan de montage, l'ordre des clips, les effets et l'audio à tout moment pour répondre à divers besoins créatifs.
Étapes
Utilisez les résultats de la recherche faciale de l'étape 1 pour monter la vidéo de compilation de visages via la configuration Timeline de SubmitMediaProducingJob. Consultez la section Exemple d'appel SDK. Pour le montage avancé, tel que les effets, les transitions ou le traitement audio, consultez Paramètres de base pour le montage vidéo et Configuration Timeline.
Exemple d'appel SDK
Voir un exemple de paramètre Timeline
{
"VideoTracks": [
{
"VideoTrackClips": [
{
"MediaId": "b5a003f0cd3f71ed919fe7e7c45b****",
"In": 54.106018,
"Effects": [
{
"Type": "Volume",
"Gain": 0
}
],
"Out": 56.126015
},
{
"MediaId": "b5a003f0cd3f71ed919fe7e7c45b****",
"In": 271.47302,
"Effects": [
{
"Type": "Volume",
"Gain": 0
}
],
"Out": 277.393
},
{
"MediaId": "b5a003f0cd3f71ed919fe7e7c45b****",
"In": 326.03903,
"Effects": [
{
"Type": "Volume",
"Gain": 0
}
],
"Out": 331.959
},
{
"MediaId": "b5a003f0cd3f71ed919fe7e7c45b****",
"In": 372.20602,
"Effects": [
{
"Type": "Volume",
"Gain": 0
}
],
"Out": 375.126
},
{
"MediaId": "b5a003f0cd3f71ed919fe7e7c45b****",
"In": 383.03903,
"Effects": [
{
"Type": "Volume",
"Gain": 0
}
],
"Out": 388.959
},
{
"MediaId": "b5a003f0cd3f71ed919fe7e7c45b****",
"In": 581.339,
"Effects": [
{
"Type": "Volume",
"Gain": 0
}
],
"Out": 587.25903
},
{
"MediaId": "b5a003f0cd3f71ed919fe7e7c45b****",
"In": 602.339,
"Effects": [
{
"Type": "Volume",
"Gain": 0
}
],
"Out": 607.293
}
]
}
],
"AudioTracks": [
{
"AudioTrackClips": [
{
"LoopMode": true,
"MediaId": "icepublic-0c4475c3936f3a8743850f2da942ceee"
}
]
}
]
}
Méthode 3 : Utiliser des modèles avancés
Fonctionnalités
Efficace et de haute qualité : Remplissez des modèles prêts à l'emploi avec vos éléments pour créer rapidement des vidéos. Concevez des modèles personnalisés pour un style unique.
Style vidéo cohérent : Les modèles garantissent un style professionnel, aidant même les utilisateurs inexpérimentés à créer des vidéos attrayantes.
Étapes
Utilisez les résultats de la recherche faciale de l'étape 1 avec un modèle avancé et le paramètre ClipsParam de SubmitMediaProducingJob pour créer une vidéo de compilation de visages. Consultez la section Exemple d'appel SDK. Cet exemple utilise le modèle public IceSys_VETemplate_s100241 avec des clips issus des résultats de la recherche faciale. Pour utiliser votre propre modèle, consultez Guide utilisateur : Comment utiliser un modèle avancé.
Exemple d'appel SDK
Voir l'exemple de code
package com.example;
import java.util.*;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.ice20201109.Client;
import com.aliyun.ice20201109.models.*;
import com.aliyun.teaopenapi.models.Config;
/**
* You must add the following Maven dependencies:
* <dependency>
* <groupId>com.aliyun</groupId>
* <artifactId>ice20201109</artifactId>
* <version>2.3.0</version>
* </dependency>
* <dependency>
* <groupId>com.alibaba</groupId>
* <artifactId>fastjson</artifactId>
* <version>1.2.9</version>
* </dependency>
*/
public class SubmitFaceEditingJobService {
static final String regionId = "cn-shanghai";
static final String bucket = "<your-bucket>";
/*** Submit a face compilation editing job based on face search results. ****/
public static void submitEditingJob(String mediaId, SearchMediaClipByFaceResponse response) throws Exception {
Client iceClient = initClient();
JSONArray intervals = buildIntervals(response);
// Submit an advanced template job. This example uses the public template IceSys_VETemplate_s100241 and configures video clips based on face search results.
JSONObject clipParams = buildClipParams(mediaId, intervals);
SubmitMediaProducingJobRequest request2 = new SubmitMediaProducingJobRequest();
request2.setTemplateId("IceSys_VETemplate_s100241");
request2.setClipsParam(clipParams.toJSONString());
request2.setOutputMediaTarget("oss-object");
outputConfig = new JSONObject();
outputConfig.put("MediaURL",
"https://" + bucket + ".oss-" + regionId + "/testTemplate/" + System.currentTimeMillis() + ".mp4");
request2.setOutputMediaConfig(outputConfig.toJSONString());
SubmitMediaProducingJobResponse response2 = iceClient.submitMediaProducingJob(request2);
System.out.println("JobId: " + response2.getBody().getJobId());
}
public Client initClient() throws Exception {
// An Alibaba Cloud account's AccessKey grants full access to all APIs. We recommend using a RAM user for API calls and daily operations.
// This example shows how to store your AccessKey ID and AccessKey Secret in environment variables. For more information, see https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-access-credentials.
com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
Config config = new Config();
config.setCredential(credentialClient);
// If you need to hard-code your AccessKey ID and AccessKey Secret, use the following code. However, we strongly recommend that you do not store your AccessKey ID and AccessKey Secret in your project code. This can lead to an AccessKey leak and compromise the security of all resources in your account.
// config.accessKeyId = "
Voir un exemple de paramètre clipParams
{
"Media0": "b5a003f0cd3f71ed919fe7e7c45b****",
"Media0.clip_start": 54.066017,
"Media1": "b5a003f0cd3f71ed919fe7e7c45b****",
"Media1.clip_start": 67.33301,
"Media2": "b5a003f0cd3f71ed919fe7e7c45b****",
"Media2.clip_start": 271.47302,
"Media3": "b5a003f0cd3f71ed919fe7e7c45b****",
"Media3.clip_start": 326.03903,
"Media4": "b5a003f0cd3f71ed919fe7e7c45b****",
"Media4.clip_start": 372.20602,
"Media5": "b5a003f0cd3f71ed919fe7e7c45b****",
"Media5.clip_start": 383.03903,
"Media6": "b5a003f0cd3f71ed919fe7e7c45b****",
"Media6.clip_start": 581.339,
"Media7": "b5a003f0cd3f71ed919fe7e7c45b****",
"Media7.clip_start": 587.25903,
"Media8": "b5a003f0cd3f71ed919fe7e7c45b****",
"Media8.clip_start": 602.339
}
Exemples
|
Vidéo créée à l'aide du montage sur timeline
Cette vidéo est une compilation de visages de l'athlète portant le maillot blanc numéro 5.
|
Vidéo créée à l'aide d'un modèle avancé
Les transitions et les effets de vitesse dans la vidéo finale proviennent du modèle.
|
|
Vidéo créée à l'aide de Script-to-Video (SDK)
Cette vidéo est une compilation de visages de l'athlète portant le maillot blanc numéro 5.
|
Vidéo créée à l'aide de Script-to-Video (console)
Cette vidéo est une compilation de visages de l'athlète portant le maillot blanc numéro 17.
|