Todos os produtos
Search
Central de documentação

Intelligent Media Services:Melhores momentos esportivos

Última atualização: Jun 28, 2026

Use estes parâmetros e exemplos de SDK para gerar vídeos de melhores momentos de eventos esportivos.

Importante

A região na URL do OSS deve corresponder à região do endpoint da API. Apenas a região China (Shanghai) é compatível.

Nota

Leia primeiro Produção de vídeo em lote para obter uma visão geral dos parâmetros e do fluxo de trabalho.

Observações de uso

  • Para gerar um clipe de melhores momentos a partir do vídeo completo de uma partida, chame a API SubmitSportsHighlightsJob. Os principais parâmetros estão descritos em InputConfig e OutputConfig abaixo.

  • Para obter detalhes de uma tarefa de geração de vídeo, chame a API GetBatchMediaProducingJob.

InputConfig

Especifica os materiais de source e as opções de processamento.

Parâmetro

Tipo

Descrição

Exemplo

Obrigatório

SportsCategory

String

Tipo de evento esportivo.

Valores válidos:

  • basketball

  • pingpong

basketball

Sim

InputMedia

String

Vídeo de source. Especifique um ID de ativo de mídia ou uma URL de mídia.

  • Compatível apenas com uma única entrada.

  • Somente arquivos de vídeo listados em Formatos de vídeo são compatíveis.

**9d46c8b4548681030f6e**

Sim

FaceRegister

List<FaceInfo>

Configurações de registro facial. Máximo de 5 entradas.

Exemplo de parâmetro

Não

SlowMotionLogoRegister

SlowMotionLogoRegister

Logotipos que antecedem cenas em câmera lenta no vídeo de source. Necessário para incluir tomadas em câmera lenta nos melhores momentos. Máximo de 5 entradas.

Exemplo de parâmetro

Não

TransferNameRegister

List<TransferNameInfo>

Mapeia nomes abreviados do placar para nomes completos de equipes ou jogadores. Máximo de 10 entradas.

Exemplo de parâmetro

Sim

FaceInfo

Campo

Tipo

Descrição

Exemplo

Obrigatório

FaceUrls

List<String>

  • URLs das imagens faciais. Forneça fotos frontais e laterais para obter melhores resultados. Cada imagem deve conter apenas um rosto nítido e desobstruído.

  • Tipos aceitos: Formatos de imagem.

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

Sim

Name

String

Nome da pessoa. Deve corresponder ao nome exibido no placar do vídeo de entrada.

John Doe

Sim

SlowMotionLogoRegister

Campo

Tipo

Descrição

Exemplo

Obrigatório

SlowMotionLogoUrls

List<String>

  • URLs das imagens de logotipo que antecedem cenas em câmera lenta no vídeo de source.

  • Tipos aceitos: Formatos de imagem.

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

Sim

TransferNameInfo

Campo

Tipo

Descrição

Exemplo

Obrigatório

OriginalName

String

Nome abreviado do placar.

Rockets

Sim

TransferName

String

Nome completo.

Houston Rockets

Sim

Exemplo de parâmetro

{
  "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

Sem suporte no momento.

OutputConfig

Define as configurações do vídeo de saída: destino, nomenclatura de arquivo, dimensões e quantidade de vídeos.

Parâmetro

Tipo

Descrição

Exemplo

Obrigatório

MediaURL

String

URL do vídeo de saída. Deve incluir o placeholder {index}.

Formato:

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

Exemplo:

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

Obrigatório quando GeneratePreviewOnly é falso e o destino de saída é o OSS.

StorageLocation

String

Local de armazenamento do arquivo de saída no ApsaraVideo VOD.

Formato:

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

Exemplo:

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

Obrigatório quando GeneratePreviewOnly é falso e o destino de saída é o ApsaraVideo VOD.

FileName

String

Nome do arquivo de saída. Deve conter o placeholder {index}.

Formato:

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

Exemplo:

example_{index}.mp4

Obrigatório quando GeneratePreviewOnly é falso e o destino de saída é o ApsaraVideo VOD.

GeneratePreviewOnly

Boolean

  • Quando verdadeiro, a tarefa gera apenas uma timeline de pré-visualização sem produzir um vídeo de saída. A URL de saída e as dimensões não são necessárias.

  • Após a conclusão da tarefa, chame GetBatchMediaProducingJob para obter os resultados. O projectId do projeto de edição está incluído na lista de subtarefas da resposta. Em seguida, chame GetEditingProject para obter a timeline de pré-visualização.

false

Não. O valor padrão é false.

Count

Integer

Quantidade de vídeos de saída. Atualmente, apenas 1 é compatível.

1

Não. O valor padrão é 1.

Width

Integer

Largura do vídeo de saída, em pixels.

1080

Sim

Height

Integer

Altura do vídeo de saída, em pixels.

1920

Sim

Video

JSONObject

Configurações do fluxo de vídeo de saída, como CRF e codec.

{"Crf": 27}

Não

Exemplo de parâmetro

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

Exemplo de SDK

Pré-requisito

SDK do lado do servidor do IMS instalado. Para mais informações, consulte Introdução.

Exemplo de código

Expandir para visualizar

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;
            }
        }
    }
}

Parâmetros de solicitação da API

Expandir para visualizar 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"
    }
  ]
}

Expandir para visualizar 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"
}

Lógica de processamento

  • SportsCategory define o tipo de evento: basketball ou pingpong.

  • FaceRegister identifica tomadas de atletas específicos para os melhores momentos.

  • SlowMotionLogoRegister fornece logotipos para detectar replays em câmera lenta no vídeo de source.

  • TransferNameRegister mapeia nomes abreviados do placar para nomes completos das equipes.

Referência da API