Todos os produtos
Search
Central de documentação

Intelligent Media Services:Transcodificação de MP4 com múltiplas faixas e marcação de idioma

Última atualização: Jun 28, 2026

Transcodifique um arquivo MP4 com o Intelligent Media Services (IMS) para incluir várias faixas de áudio e atribuir um idioma a cada faixa.

Fluxo de trabalho

image

Exemplo da estrutura do arquivo de saída:

Duration: 00:00:31.40, start: 0.000000, bitrate: 816 kb/s
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 960x540 [SAR 1:1 DAR 16:9], 663 kb/s, 25 fps, 25 tbr, 12800 tbn (default)
Stream #0:1[0x2](zho): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
Stream #0:2[0x3](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
Stream #0:3[0x4](jpn): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)

Pré-requisitos

O Intelligent Media Services (IMS) deve estar ativado. Para mais informações, consulte Ativar o serviço.

Preparações

Configuração básica do IMS

  • Configuração de armazenamento: vincule um bucket do Object Storage Service (OSS) ao IMS. Para mais informações, consulte Configurar um endereço de armazenamento.

  • Configuração de callback: configure um callback HTTP ou do Message Notification Service (MNS) para receber notificações sobre o status dos jobs. Para mais detalhes sobre métodos e eventos de callback, consulte Visão geral dos eventos de callback.

Modelos de transcodificação

Procedimento

image

Requisitos do exemplo

Codec: H.264/H.265

Resolução de vídeo: 360p/540p/720p/1080p

Áudio: HE-AAC a 64 kbps (configuração padrão).

Exemplo de configuração

Crie modelos de transcodificação para quatro resoluções de vídeo conforme descrito abaixo. Para instruções, consulte Criar um modelo de transcodificação.

Nota

Para utilizar a transcodificação Narrowband HD™, crie um modelo correspondente com base nas tabelas. Em seguida, envie um ticket para solicitar à Alibaba Cloud uma atualização de configuração no backend.

H.264

Modelo de transcodificação

Codec

Formato de contêiner

Outros parâmetros

Video-360P

H.264

mp4

  • Resolução (borda longa fixa): 640*

  • Configure os demais parâmetros conforme necessário.

Video-540P

H.264

mp4

  • Resolução (borda longa fixa): 960*

  • Defina os outros parâmetros de acordo com sua necessidade.

Video-720P

H.264

mp4

  • Resolução (borda longa fixa): 1280*

  • Ajuste os parâmetros restantes conforme necessário.

Video-1080P

H.264

mp4

  • Resolução (borda longa fixa): 1920*

  • Especifique os demais parâmetros conforme sua necessidade.

H.265

Modelo de transcodificação

Codec

Formato de contêiner

Outros parâmetros

Video-360P

H.265

mp4

  • Resolução (borda longa fixa): 640*

  • Configure os demais parâmetros conforme necessário.

Video-540P

H.265

mp4

  • Resolução (borda longa fixa): 960*

  • Defina os outros parâmetros de acordo com sua necessidade.

Video-720P

H.265

mp4

  • Resolução (borda longa fixa): 1280*

  • Ajuste os parâmetros restantes conforme necessário.

Video-1080P

H.265

mp4

  • Resolução (borda longa fixa): 1920*

  • Especifique os demais parâmetros conforme sua necessidade.

Enviar um job de transcodificação

Chame a operação de API SubmitMediaConvertJob para enviar um job de transcodificação.

Parâmetros de áudio

Parâmetro

Tipo

Descrição

InputRef

String

Nome do stream de entrada para esta faixa de áudio. Deve corresponder a um Name definido no array Inputs ou AudioSelector.

LanguageControl

String

Controla como a tag de idioma é definida para o stream de saída. Valores válidos:

  • InputFirst: utiliza a tag de idioma do stream de entrada. Caso o stream de entrada não possua tag de idioma, o serviço usa a tag especificada no parâmetro Language.

  • Configured: aplica a tag de idioma definida no parâmetro Language.

  • None: não adiciona tag de idioma. Este é o valor padrão.

Language

String

Código de idioma ISO 639-2 para a faixa de áudio.

Remove

String

Indica se o stream de áudio deve ser removido.

Codec

String

Codec de áudio utilizado.

Profile

String

Perfil de codificação de áudio.

Bitrate

String

Taxa de bits do áudio de saída.

Samplerate

String

Taxa de amostragem do áudio.

Channels

String

Número de canais de áudio.

Volume

Object

Configurações de controle de volume.

Cenário 1: Manter o áudio original

Nota
  1. O array Inputs especifica três sources: um arquivo de vídeo principal com áudio padrão (video), um arquivo de áudio separado em inglês (EnglishAudio) e um arquivo de áudio separado em japonês (JapaneseAudio).

  2. Em OutputGroups.GroupConfig, "Type": "File" define a saída como um único arquivo de contêiner.

  3. Cada faixa utiliza InputRef para indicar sua source de entrada e LanguageControl para determinar a lógica de marcação de idioma.

{
  "Inputs": [
    {
      "Name": "video",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<video-with-default-audio.mp4>"}
    },
    {
      "Name": "EnglishAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<english-audio.mp4>"}
    },
    {
      "Name": "JapaneseAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<japanese-audio.mp4>"}
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "File",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "https://<your-bucket>.<public-endpoint>/<output-path>/"
        }
      },
      "Outputs": [
        {
          "Name": "360P",
          "OutputFileName": "video/360p/360p",
          "TemplateId": "Video-360P",
          "OverrideParams": {
            "Audios": [
              {
                "InputRef": "video",
                "LanguageControl": "InputFirst"
              }, {
                "InputRef": "EnglishAudio",
                "LanguageControl": "Configured",
                "Language": "eng"
              }, {
                "InputRef": "JapaneseAudio",
                "LanguageControl": "Configured",
                "Language": "jpn"
              }
            ]
          }
        }
      ]
    }
  ]
}

Cenário 2: Remover o áudio original

Nota

Esta configuração assemelha-se ao Cenário 1, mas omite a referência à faixa de áudio do vídeo original no array Audios. Consequentemente, o arquivo de saída contém apenas as faixas de áudio em inglês e japonês.

{
  "Inputs": [
    {
      "Name": "video",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<video-with-default-audio.mp4>"}
    },
    {
      "Name": "EnglishAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<english-audio.mp4>"}
    },
    {
      "Name": "JapaneseAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<japanese-audio.mp4>"}
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "File",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "https://<your-bucket>.<public-endpoint>/<output-path>/"
        }
      },
      "Outputs": [
        {
          "Name": "360P",
          "OutputFileName": "video/360p/360p",
          "TemplateId": "Video-360P",
          "OverrideParams": {
            "Audios": [
              {
                "InputRef": "EnglishAudio",
                "LanguageControl": "Configured",
                "Language": "eng"
              }, {
                "InputRef": "JapaneseAudio",
                "LanguageControl": "Configured",
                "Language": "jpn"
              }
            ]
          }
        }
      ]
    }
  ]
}

Cenário 3: Selecionar áudio por idioma

Este exemplo utiliza o parâmetro AudioSelector para selecionar a faixa de áudio marcada como jpn da entrada JapaneseFile. A faixa de áudio de saída define LanguageControl como InputFirst, herdando assim a tag de idioma da entrada.

{
  "Inputs": [
    {
      "Name": "video",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<video-with-default-audio.mp4>"}
    },
    {
      "Name": "EnglishAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<english-audio.mp4>"}
    },
    {
      "Name": "JapaneseFile",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<multilingual-file.mp4>"},
      "AudioSelector": [{
        "Name": "JapaneseAudio",
        "Rule": "tag",
        "TagConfig": {"language": "jpn"}
      }]
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "File",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "https://<your-bucket>.<public-endpoint>/<output-path>/"
        }
      },
      "Outputs": [
        {
          "Name": "360P",
          "OutputFileName": "video/360p/360p",
          "TemplateId": "Video-360P",
          "OverrideParams": {
            "Audios": [
              {
                "InputRef": "video",
                "LanguageControl": "InputFirst"
              }, {
                "InputRef": "EnglishAudio",
                "LanguageControl": "Configured",
                "Language": "eng"
              }, {
                "InputRef": "JapaneseAudio",
                "LanguageControl": "InputFirst"
              }
            ]
          }
        }
      ]
    }
  ]
}

Consultar o job de transcodificação

Chame a operação de API GetMediaConvertJob para recuperar os detalhes de um job de transcodificação.

Evento de callback

Tipo de evento: MediaConvertComplete

Este evento não é configurável pelo console. Para configurá-lo, chame a operação de API SetEventCallback.

Principais parâmetros de callback

Parâmetro

Tipo

Obrigatório

Descrição

Name

String

Sim

Nome do job pai.

JobId

String

Sim

ID do job.

Status

String

Sim

Status do job. O valor Success indica conclusão bem-sucedida. O job pai é considerado bem-sucedido se pelo menos um sub-job for concluído com êxito.

TriggerSource

String

Não

Origem do gatilho. API indica que o job foi enviado por meio de uma chamada de API.

FinishTime

String

Não

Horário de conclusão no formato UTC: yyyy-MM-ddTHH:mm:ssZ.

UserData

String

Não

Dados personalizados especificados no envio do job, repassados e retornados no callback.

Exemplo

{
	"FinishTime": "2025-05-09T08:03:21Z",
	"JobId": "5d37357cb3a44d10ba33c52760c896cd",
	"Status": "Success",
	"TriggerSource": "IceWorkflow",
	"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}