Todos os produtos
Search
Central de documentação

Intelligent Media Services:Multi-audio track transcoding and packaging

Última atualização: Jun 28, 2026

Transcodifique e empacote arquivos de mídia com várias faixas de áudio usando o Intelligent Media Services (IMS) para gerar conteúdo de áudio e vídeo multilíngue compatível com diversos dispositivos e players.

Fluxo de trabalho de transcodificação e empacotamento

image

Exemplo de estrutura de arquivo empacotado:

#EXTM3U

# Audio stream definitions (multi-language)
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="Chinese",LANGUAGE="zh",DEFAULT=YES,URI="audio/chinese.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English",LANGUAGE="en",DEFAULT=NO,URI="audio/english.m3u8"

# Video stream definitions (multi-bitrate)
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=360x640,AUDIO="audio",CODECS="hvc1,mp4a.40.5"
video/360p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=900000,RESOLUTION=720x1280,AUDIO="audio",CODECS="hvc1,mp4a.40.5"
video/720p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2000000,RESOLUTION=1080x1920,AUDIO="audio",CODECS="hvc1,mp4a.40.5"
video/1080p.m3u8

Pré-requisitos

Verifique se o Intelligent Media Services (IMS) está ativado. Para obter instruções, consulte Ativar o IMS.

Configuração

Configuração básica do IMS

Configuração do modelo de transcodificação

Procedimento de configuração

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 cada resolução de vídeo necessária com base nas tabelas a seguir. Para obter instruções, consulte Criar um modelo de transcodificação.

Nota

Para transcodificar com Narrowband HD™, crie os modelos correspondentes conforme a tabela e, em seguida, envie um ticket para que a Alibaba Cloud atualize sua configuração de backend.

H.264

Modelo de transcodificação

Codec

Formato de contêiner

Outras configurações

Video-360P

H.264

m3u8(.ts)

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

  • Desativar áudio

  • Duração do segmento: 5 s

  • Configure outras definições conforme necessário.

Video-540P

H.264

m3u8(.ts)

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

  • Desativar áudio

  • Duração do segmento: 5 s

  • Configure outras definições conforme necessário.

Video-720P

H.264

m3u8(.ts)

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

  • Desativar áudio

  • Duração do segmento: 5 s

  • Configure outras definições conforme necessário.

Video-1080P

H.264

m3u8(.ts)

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

  • Desativar áudio

  • Duração do segmento: 5 s

  • Configure outras definições conforme necessário.

Audio-64Kbps

HE-AAC

m3u8(.ts)

  • Desativar vídeo

  • Duração do segmento: 5 s

Nota

Não é possível criar este modelo no console. Use a API ou envie um ticket.

H.265

Nota
  • Recomendado: Use o formato de contêiner fmp4. Este é o padrão para dispositivos Apple e oferece compatibilidade com o Safari.

  • Alternativa: O formato de contêiner .ts também é suportado, mas não é compatível com o Safari.

  • Limitação do console: Não é possível criar um stream com o formato de contêiner fmp4 diretamente no console. Crie o stream com o formato de contêiner m3u8(ts). A Alibaba Cloud atualizará a configuração no backend posteriormente.

Modelo de transcodificação

Codec

Formato de contêiner

Outras configurações

Video-360P

H.265

m3u8(.fmp4)

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

  • Desativar áudio

  • Duração do segmento: 5 s

  • Configure outras definições conforme necessário.

Video-540P

H.265

m3u8(.fmp4)

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

  • Desativar áudio

  • Duração do segmento: 5 s

  • Configure outras definições conforme necessário.

Video-720P

H.265

m3u8(.fmp4)

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

  • Desativar áudio

  • Duração do segmento: 5 s

  • Configure outras definições conforme necessário.

Video-1080P

H.265

m3u8(.fmp4)

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

  • Desativar áudio

  • Duração do segmento: 5 s

  • Configure outras definições conforme necessário.

Audio-64Kbps

HE-AAC

m3u8(.fmp4)

  • Desativar vídeo

  • Duração do segmento: 5 s

Nota

Não é possível criar este modelo no console. Use a API ou envie um ticket.

Tarefa de transcodificação e empacotamento com múltiplas taxas de bits

Envio de tarefa com múltiplas taxas de bits

Chame a operação SubmitMediaConvertJob para enviar uma tarefa de transcodificação dos seus arquivos de mídia.

Parâmetros HlsGroupConfig

Parâmetro

Tipo

Descrição

Type

string

Tipo do fluxo de dados.

Valores válidos:

  • video: fluxo de vídeo. Processa apenas configurações relacionadas a vídeo.

  • audio: fluxo de áudio. Processa apenas configurações relacionadas a áudio.

  • hybrid: fluxo híbrido. Processa configurações de áudio e vídeo.

Bandwidth

string

Largura de banda. Parâmetro opcional. Por padrão, usa a taxa de bits (em bps).

Válido apenas quando Type estiver definido como video ou hybrid.

AudioGroup

string

Grupo de áudio referenciado pelo fluxo de vídeo. Válido apenas quando Type estiver definido como video.

SubtitleGroup

string

Grupo de legendas referenciado pelo fluxo de vídeo. Válido apenas quando Type estiver definido como video ou hybrid.

Name

string

Atributo NAME do fluxo de saída no manifesto HLS. Parâmetro obrigatório quando Type estiver definido como audio ou subtitle.

Group

string

Atributo GROUP_ID do fluxo de saída no manifesto HLS. Válido apenas quando Type estiver definido como audio ou subtitle.

O valor padrão corresponde ao parâmetro Type.

Language

string

Atributo LANGUAGE do fluxo de saída no manifesto HLS. Válido apenas quando Type estiver definido como audio ou subtitle. O valor deve estar em conformidade com a RFC 5646.

Default

boolean

Define se este é o fluxo padrão. Válido apenas quando Type estiver definido como audio.

AutoSelect

boolean

Define se o fluxo deve ser selecionado automaticamente. Válido apenas quando Type estiver definido como audio.

Forced

boolean

Define se o fluxo é forçado. Válido apenas quando Type estiver definido como audio.

Caso de uso 1: Transcodificar e empacotar

{
  "Inputs": [
    {
      "Name": "video",
      "InputFile": {
        "Type": "OSS",
        "Media": "https://<your-bucket>.<public-endpoint>/<video_1_chinese.mp4>"
      }
    },
    {
      "Name": "EnglishAudio",
      "InputFile": {
        "Type": "OSS",
        "Media": "https://<your-bucket>.<public-endpoint>/<video_1_english.mp4>"
      }
    },
    {
      "Name": "JapaneseAudio",
      "InputFile": {
        "Type": "OSS",
        "Media": "https://<your-bucket>.<public-endpoint>/<video_1_japanese.mp4>"
      }
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "Hls",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "https://<your-bucket>.<public-endpoint>/<URI>/"
        },
        "ManifestName": "<m3u8_filename>"
      },
      "Outputs": [
        {
          "Name": "360P",
          "InputRef": "video",
          "OutputFileName": "video/360p/360p",
          "TemplateId": "Video-360P"
        },
        {
          "Name": "540P",
          "InputRef": "video",
          "OutputFileName": "video/540p/540p",
          "TemplateId": "Video-540P"
        },
        {
          "Name": "720P",
          "InputRef": "video",
          "OutputFileName": "video/720p/720p",
          "TemplateId": "Video-720P"
        },
        {
          "Name": "1080P",
          "InputRef": "video",
          "OutputFileName": "video/1080p/1080p",
          "TemplateId": "Video-1080P"
        },
        {
          "OutputFileName": "audio/chinese/chinese",
          "TemplateId": "Audio-64Kbps",
          "HlsGroupConfig": {
            "Name": "Chinese",
            "Type":"audio",
            "Language": "zh",
            "Autoselect": "TRUE",
            "Default": "TRUE"
          }
        },
        {
          "InputRef": "EnglishAudio",
          "OutputFileName": "audio/english/english",
          "TemplateId": "Audio-64Kbps",
          "HlsGroupConfig": {
            "Name": "English",
            "Type":"audio",
            "Language": "en",
            "Autoselect": "TRUE"
          }
        },
        {
          "InputRef": "JapaneseAudio",
          "OutputFileName": "audio/japanese/japanese",
          "TemplateId": "Audio-64Kbps",
          "HlsGroupConfig": {
            "Name": "Japanese",
            "Type":"audio",
            "Language": "ja",
            "Autoselect": "TRUE"
                    }
                }
            ]
        }
    ]
}

Caso de uso 2: Adicionar faixas de áudio

Procedimento:

  1. Especifique uma entrada chamada "ExtraAudio". Na saída, referencie essa entrada para transcodificá-la em um fluxo de áudio HLS.

  2. Defina InputRef na opção ManifestExtend do GroupConfig para referenciar o arquivo "RefManifest" da entrada, reutilizando o manifesto original para adicionar faixas de áudio extras.

{
  "Inputs": [
    {
      "Name": "ExtraAudio",
      "InputFile": {
        "Type": "OSS",
        "Media": "http://your-bucket.oss-region.aliyuncs.com/in/extra-audio.mp4"
      }
    },
    {
      "Name": "RefManifest",
      "InputFile": {
        "Type": "OSS",
        "Media": "http://your-bucket.oss-region.aliyuncs.com/in/manifest.m3u8"
      }
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "Hls",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "http://your-bucket.oss-region.aliyuncs.com/out/demo"
        },
        "ManifestName": "manifest",
        "ManifestExtend": {
          "InputRef": "RefManifest"
        }
      },
      "Outputs": [
        {
          "Name": "ExtraAudioOut",
          "InputRef": "ExtraAudio",
          "OutputFileName": "extra-audio",
          "TemplateId": "#YourAudioTemplateId",
          "hlsGroupConfig": {
            "Type": "audio",
            "Name":"Chinese",
            "Language": "zh-cn"
          }
        }
      ]
    }
  ]
}

Caso de uso 3: Substituir faixas de áudio

Este cenário baseia-se no Caso de uso 2. Use a opção Excludes dentro de ManifestExtend para excluir fluxos específicos do manifesto original.

Parâmetro

Tipo

Descrição

Name

string

Atributo NAME do fluxo a ser excluído.

Type

string

Atributo TYPE do fluxo a ser excluído.

Valores válidos:

  • Audio

  • Subtitle

Language

string

Atributo LANGUAGE do fluxo a ser excluído. O valor deve estar em conformidade com a RFC 5646.

{
  "Inputs": [
    {
      "Name": "ExtraAudio",
      "InputFile": {
        "Type": "OSS",
        "Media": "http://your-bucket.oss-region.aliyuncs.com/in/extra-audio.mp4"
      }
    },
    {
      "Name": "RefManifest",
      "InputFile": {
        "Type": "OSS",
        "Media": "http://your-bucket.oss-region.aliyuncs.com/in/manifest.m3u8"
      }
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "Hls",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "http://your-bucket.oss-region.aliyuncs.com/out/demo"
        },
        "ManifestName": "manifest",
        "ManifestExtend": {
          "InputRef": "RefManifest",
          "Excludes": [{
              "Language": "en",
              "Type": "Audio"
            }]
        }
      },
      "Outputs": [
        {
          "Name": "ExtraAudioOut",
          "InputRef": "ExtraAudio",
          "OutputFileName": "extra-audio",
          "TemplateId": "#YourAudioTemplateId",
          "hlsGroupConfig": {
            "Type": "audio",
            "Name":"Chinese",
            "Language": "zh-cn"
          }
        }
      ]
    }
  ]
}

Consulta dos resultados da tarefa

Chame a operação GetMediaConvertJob para consultar os detalhes de uma tarefa de transcodificação.

Notificações de callback

Tipo de evento: MediaConvertComplete

Não é possível configurar este evento no console. Em vez disso, chame a operação SetEventCallback.

Principais parâmetros de callback

Parâmetro

Tipo

Obrigatório

Descrição

Name

String

Sim

Nome da tarefa principal.

JobId

String

Sim

ID da tarefa.

Status

String

Sim

Status da tarefa. Success indica que pelo menos uma saída (subtarefa) foi concluída com êxito.

TriggerSource

String

Não

Origem que acionou a tarefa. API indica envio por chamada de API.

FinishTime

String

Não

Horário de conclusão da tarefa. O formato deve corresponder a EventTime.

UserData

string

Não

String personalizada especificada no envio da tarefa. Esse valor é transmitido e retornado no callback.

Exemplo

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

Reprodução do vídeo empacotado com múltiplas taxas de bits

Use o ApsaraVideo Player para reproduzir o vídeo empacotado com múltiplas taxas de bits.

Fluxo de trabalho de tradução de vídeo e empacotamento com múltiplas taxas de bits

image
  1. Prepare as entradas: Forneça o arquivo de source.

  2. Traduza: Traduza o arquivo de source para os idiomas de destino, como inglês e japonês, para gerar os arquivos de áudio ou vídeo correspondentes.

  3. Transcodifique e empacote: Chame a operação SubmitMediaConvertJob para mesclar o conteúdo multilíngue e transcodificá-lo em um vídeo padronizado com múltiplas taxas de bits.