Tous les produits
Search
Centre de documentation

Intelligent Media Services:Temps forts sportifs

Dernière mise à jour :Aug 11, 2026

Utilisez ces paramètres et exemples de SDK pour générer des temps forts d'événements sportifs.

Important

La région indiquée dans l'URL OSS doit correspondre à la région du point de terminaison du service API. Seule la région Chine (Shanghai) est prise en charge.

Remarque

Consultez d'abord la rubrique Production vidéo par lot pour obtenir une vue d'ensemble des paramètres et du flux de travail.

Notes d'utilisation

  • Pour générer un clip de temps forts à partir d'une vidéo de match complète, appelez l'API SubmitSportsHighlightsJob. Les paramètres clés sont décrits dans les sections InputConfig et OutputConfig ci-dessous.

  • Pour obtenir les détails d'une tâche de génération de vidéo, appelez l'API GetBatchMediaProducingJob.

InputConfig

Spécifie les éléments sources et les options de traitement.

Paramètre

Type

Description

Exemple

Obligatoire

SportsCategory

String

Type d'événement sportif.

Valeurs valides :

  • basketball

  • pingpong

basketball

Oui

InputMedia

String

Vidéo source. Spécifiez un ID de ressource multimédia ou une URL multimédia.

  • Une seule entrée est prise en charge.

  • Seuls les fichiers vidéo figurant dans la liste des Formats vidéo sont pris en charge.

**9d46c8b4548681030f6e**

Oui

FaceRegister

List<FaceInfo>

Paramètres d'enregistrement des visages. Maximum 5 entrées.

Exemple de paramètre

Non

SlowMotionLogoRegister

SlowMotionLogoRegister

Logos précédant les scènes au ralenti dans la vidéo source. Requis pour inclure des plans au ralenti dans les temps forts. Maximum 5 entrées.

Exemple de paramètre

Non

TransferNameRegister

List<TransferNameInfo>

Associe les noms abrégés du tableau d'affichage aux noms complets des équipes ou des joueurs. Maximum 10 entrées.

Exemple de paramètre

Oui

FaceInfo

Champ

Type

Description

Exemple

Obligatoire

FaceUrls

List<String>

  • URL des images de visage. Fournissez des photos de face et de profil pour obtenir les meilleurs résultats. Chaque image ne doit contenir qu'un seul visage clair et non obstrué.

  • Types acceptés : Formats d'image.

["http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.png","http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.png"]

Oui

Name

String

Nom de la personne. Doit correspondre au nom affiché sur le tableau d'affichage dans la vidéo d'entrée.

John Doe

Oui

SlowMotionLogoRegister

Champ

Type

Description

Exemple

Obligatoire

SlowMotionLogoUrls

List<String>

  • URL des images de logo précédant les scènes au ralenti dans la vidéo source.

  • Types acceptés : Formats d'image.

["http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.png","http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.png"]

Oui

TransferNameInfo

|
**Champ**
|
**Type**
|
**Description**
|
**Exemple**
|
**Obligatoire**
| | --- | --- | --- | --- | --- | |
OriginalName
|
String
|
Nom abrégé issu du tableau d'affichage.
|
Rockets
|
Oui
| |
TransferName
|
String
|
Nom complet.
|
Houston Rockets
|
Oui
|

Exemple de paramètre

{
  "SportsCategory": "basketball",
  "InputMedia": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4",
  "FaceRegister": [
    {
      "FaceUrls": ["http://testcdn.com/front.jpg", "http://testcdn.com/side.jpg"],
      "Name": "James"
    }
  ],
  "SlowMotionLogoRegister": {
  	"SlowMotionLogoUrls": ["http://testcdn.com/logo1.jpg", "http://testcdn.com/logo2.jpg"]
  },
  "TransferNameRegister": [
    {
      "OriginalName": "IND",
      "TransferName": "Indiana Pacers"
    }
  ]
}






























EditingConfig

Non pris en charge actuellement.

OutputConfig

Spécifie les paramètres de la vidéo de sortie : destination, nommage du fichier, dimensions et nombre de vidéos.

Paramètre

Type

Description

Exemple

Obligatoire

MediaURL

String

URL de la vidéo de sortie. Doit inclure l'espace réservé {index}.

Format :

http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4

Exemple :

http://example.oss-cn-shanghai.aliyuncs.com/example/example_{index}.mp4

Obligatoire lorsque GeneratePreviewOnly est défini sur false et que la destination de sortie est OSS.

StorageLocation

String

Emplacement de stockage du fichier de sortie dans ApsaraVideo VOD.

Format :

[your-vod-bucket].oss-[your-region-id].aliyuncs.com

Exemple :

outin-**6c886b4549d481030f6e**.oss-cn-shanghai.aliyuncs.com

Obligatoire lorsque GeneratePreviewOnly est défini sur false et que la destination de sortie est ApsaraVideo VOD.

FileName

String

Nom du fichier de sortie. Doit contenir l'espace réservé {index}.

Format :

[your-file-name]_{index}.mp4

Exemple :

example_{index}.mp4

Obligatoire lorsque GeneratePreviewOnly est défini sur false et que la destination de sortie est ApsaraVideo VOD.

GeneratePreviewOnly

Boolean

  • Si la valeur est true, la tâche génère uniquement une chronologie de prévisualisation sans produire de vidéo de sortie. L'URL de sortie et les dimensions ne sont pas requises.

  • Une fois la tâche terminée, appelez GetBatchMediaProducingJob pour obtenir les résultats. Le projectId du projet de montage est inclus dans la liste des sous-tâches de la réponse. Appelez ensuite GetEditingProject pour obtenir la chronologie de prévisualisation.

false

Non. La valeur par défaut est false.

Count

Integer

Nombre de vidéos de sortie. Actuellement, seule la valeur 1 est prise en charge.

1

Non. La valeur par défaut est 1.

Width

Integer

Largeur de la vidéo de sortie, en pixels.

1080

Oui

Height

Integer

Hauteur de la vidéo de sortie, en pixels.

1920

Oui

Video

JSONObject

Paramètres du flux vidéo de sortie, tels que CRF et le codec.

{"Crf": 27}

Non

Exemple de paramètre

{
 	"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/xxx_{index}.mp4",
 	"Count": 1,
 	"Width": 1080,
 	"Height": 1920,
 	"Video": {"Crf": 27},
    "GeneratePreviewOnly": false
}

Exemple de SDK

Prérequis

Le SDK côté serveur d'IMS est installé. Pour plus d'informations, consultez la rubrique Premiers pas.

Exemple de code

Développer pour afficher

package com.example.vodservicesdktest.ice.editing;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import com.aliyun.ice20201109.Client;
import com.aliyun.ice20201109.models.GetBatchMediaProducingJobRequest;
import com.aliyun.ice20201109.models.GetBatchMediaProducingJobResponse;
import com.aliyun.ice20201109.models.SubmitSportsHighlightsJobRequest;
import com.aliyun.ice20201109.models.SubmitSportsHighlightsJobResponse;
import com.aliyun.teaopenapi.models.Config;

/**
 *  Add the following Maven dependencies:
 *   <dependency>
 *      <groupId>com.aliyun</groupId>
 *      <artifactId>ice20201109</artifactId>
 *      <version>3.4.0</version>
 *  </dependency>
 *  <dependency>
 *      <groupId>com.alibaba</groupId>
 *      <artifactId>fastjson</artifactId>
 *      <version>1.2.9</version>
 *  </dependency>
 */
public class SportsHighlightsJobService {

    static final String regionId = "[your-region-id]";
    static final String bucket = "[your-bucket]";
    private Client iceClient;

    public static void main(String[] args) throws Exception {
        SportsHighlightsJobService scriptBatchEditingService = new SportsHighlightsJobService();
        scriptBatchEditingService.initClient();
        scriptBatchEditingService.runExample();
    }

    public void initClient() throws Exception {
        // An AccessKey pair from an Alibaba Cloud account can call all API operations. For security, we recommend using a RAM user for API calls and routine O&M.
        // This example shows how to configure the 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 want to hard-code the AccessKey ID and AccessKey Secret, use the following code. However, we strongly recommend that you do not hard-code them in your project to prevent AccessKey pair leakage and ensure the security of all your resources.
        // config.accessKeyId = <Your AccessKey ID>;
        // config.accessKeySecret = <Your AccessKey Secret>;
        config.endpoint = "ice." + regionId + ".aliyuncs.com";
        config.regionId = regionId;
        iceClient = new Client(config);
    }

    public void runExample() throws Exception {

        JSONObject inputConfig = new JSONObject();
        inputConfig.put("SportsCategory", "basketball");
        inputConfig.put("InputMedia", "http://[your-bucket].oss-[your-region-id].aliyuncs.com/basketball.mp4");

        JSONArray transferNameRegisterArray = new JSONArray();
        JSONObject transferName = new JSONObject();
        transferName.put("OriginalName", "IND");
        transferName.put("TransferName", "Indiana Pacers");
        transferNameRegisterArray.add(transferName);
        inputConfig.put("TransferNameRegister", transferNameRegisterArray);

        // Output video dimensions for a vertical video
        //int outputWidth = 1080;
        //int outputHeight = 1920;

        // Output video dimensions for a horizontal video
        int outputWidth = 1920;
        int outputHeight = 1080;

        // The OSS URL for the output video. Must include the {index} placeholder.
        String mediaUrl = "http://" + bucket + ".oss-" + regionId + ".aliyuncs.com/sports_highlights/output_{index}.mp4";

        JSONObject outputConfig = new JSONObject();
        outputConfig.put("MediaURL", mediaUrl);
        outputConfig.put("Width", outputWidth);
        outputConfig.put("Height", outputHeight);

        // Submit a sports highlights job
        SubmitSportsHighlightsJobRequest request = new SubmitSportsHighlightsJobRequest();
        request.setInputConfig(inputConfig.toJSONString());
        request.setOutputConfig(outputConfig.toJSONString());

        SubmitSportsHighlightsJobResponse response = iceClient.submitSportsHighlightsJob(request);
        String jobId = response.getBody().getJobId();
        System.out.println("Start sports highlights job, JobId: " + jobId);

        // Poll for job completion
        System.out.println("Waiting for job to finish...");
        int maxTry = 3000;
        int i = 0;
        while (i < maxTry) {
            Thread.sleep(3000);
            i++;
            GetBatchMediaProducingJobRequest getRequest = new GetBatchMediaProducingJobRequest();
            getRequest.setJobId(jobId);
            GetBatchMediaProducingJobResponse getResponse = iceClient.getBatchMediaProducingJob(getRequest);
            String status = getResponse.getBody().getEditingBatchJob().getStatus();
            System.out.println("JobId: " + jobId + ", status:" + status);

            if ("Failed".equals(status)) {
                System.out.println("Job failed. JobInfo: " + JSONObject.toJSONString(getResponse.getBody().getEditingBatchJob()));
                throw new Exception("Production failed. BatchJobId: " + jobId);
            }

            if ("Finished".equals(status)) {
                System.out.println("Job finished. JobInfo: " + JSONObject.toJSONString(getResponse.getBody().getEditingBatchJob()));
                break;
            }
        }
    }
}

Paramètres de la requête API

Développer pour afficher InputConfig

{
  "SportsCategory": "basketball",
  "InputMedia": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/basketball-0707.mp4",
  "FaceRegister": [
    {
      "FaceUrls": ["http://testcdn.com/front.jpg", "http://testcdn.com/side.jpg"],
      "Name": "James"
    }
  ],
  "SlowMotionLogoRegister": {
  	"SlowMotionLogoUrls": ["http://testcdn.com/logo1.jpg", "http://testcdn.com/logo2.jpg"]
  },
  "TransferNameRegister": [
    {
      "OriginalName": "IND",
      "TransferName": "Indiana Pacers"
    }
  ]
}

Développer pour afficher OutputConfig

{
  "Count": 1,
  "Height": 1080,
  "Width": 1920,
  "MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4"
}

Logique de traitement

  • SportsCategory détermine le type d'événement : basketball ou pingpong.

  • FaceRegister identifie les plans des athlètes spécifiés pour les temps forts.

  • SlowMotionLogoRegister fournit les logos permettant de détecter les rediffusions au ralenti dans la vidéo source.

  • TransferNameRegister associe les noms abrégés du tableau d'affichage aux noms complets des équipes.

Référence API

  • Pour soumettre une tâche de temps forts sportifs, consultez la rubrique SubmitSportsHighlightsJob.

  • Pour récupérer les détails d'une tâche de production vidéo par lot, consultez la rubrique GetBatchMediaProducingJob.

  • Pour vous préparer à l'utilisation du SDK côté serveur, consultez la rubrique Premiers pas.

  • Pour soumettre une tâche de montage et de production multimédia, consultez la rubrique SubmitMediaProducingJob.