Todos os produtos
Search
Central de documentação

Intelligent Media Services:Transcodificação e empacotamento com múltiplas legendas

Última atualização: Jun 28, 2026

Use o IMS para transcodificar e empacotar arquivos de mídia com várias faixas de legenda e permitir a reprodução em diversos dispositivos.

Fluxo de trabalho de transcodificação e empacotamento

image

Exemplo de estrutura de arquivo empacotado:

#EXTM3U

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

# Video stream definition (multi-bitrate)
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=900000,CODECS="avc1.640020",RESOLUTION=720x1280,AUDIO="audio",SUBTITLES="subtitle"
video/720p/720p.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,CODECS="avc1.640020",RESOLUTION=360x640,AUDIO="audio",SUBTITLES="subtitle"
video/360p/360p.m3u8

# Subtitle stream definition (multi-language)
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitle",NAME="Chinese-Subtitles",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="zh",URI="subtitle/chinese/chinese.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitle",NAME="English-Subtitle",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="en",URI="subtitle/english/english.m3u8"

Pré-requisitos

Ative o IMS. Ativar o IMS.

Configuração

Configuração básica do IMS

Configuração do modelo de transcodificação

Processo de configuração

image

Requisitos do exemplo

Codec: H.264/H.265

Resolução de vídeo: 360P, 540P, 720P, 1080P

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

Legendas: M3U8 (VTT).

Exemplo de configuração

Crie modelos de transcodificação para quatro resoluções de vídeo. Criar um modelo de transcodificação.

Nota

Para transcodificação Narrowband HD™, crie um modelo conforme a tabela e envie um ticket para atualizar a configuração do 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*

  • Duração do segmento: 5s

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

Video-540P

H.264

m3u8(.ts)

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

  • Duração do segmento: 5s

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

Video-720P

H.264

m3u8(.ts)

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

  • Duração do segmento: 5s

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

Video-1080P

H.264

m3u8(.ts)

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

  • Duração do segmento: 5s

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

H.265

Nota
  • Recomendado: Use o formato de contêiner fmp4, padrão da Apple com melhor compatibilidade no Safari.

  • Alternativa: O formato ts é compatível, mas não funciona no Safari.

  • Limitação do console: O console não oferece suporte a fmp4. Crie um modelo com m3u8(ts) e envie um ticket para atualizar a configuração do backend.

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*

  • Duração do segmento: 5s

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

Video-540P

H.265

m3u8(.fmp4)

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

  • Duração do segmento: 5s

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

Video-720P

H.265

m3u8(.fmp4)

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

  • Duração do segmento: 5s

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

Video-1080P

H.265

m3u8(.fmp4)

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

  • Duração do segmento: 5 s

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

Transcodificação e empacotamento multibitrate

Envio de job

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

Uso de OverrideParams para configurar fluxos de legenda

Não é possível definir legendas nos modelos de transcodificação. Especifique-as no parâmetro OverrideParams.

Parâmetro

Tipo

Descrição

Subtitles

Array of Subtitle

Configurações do fluxo de legendas.

Subtitle

Parâmetro

Tipo

Descrição

Codec

String

Codec do fluxo de legendas. O HLS aceita apenas VTT.

Parâmetros de HlsGroupConfig

Parâmetro

Tipo

Descrição

Type

string

Tipo de fluxo.

Valores válidos:

  • video: O IMS processa apenas as configurações de vídeo.

  • audio: O IMS processa apenas as configurações de áudio.

  • hybrid: O IMS processa as configurações de áudio e vídeo.

Bandwidth

string

Largura de banda. Opcional. O padrão é a taxa de bits (bps).

Aplica-se quando Type é video ou hybrid.

AudioGroup

string

Grupo de áudio deste fluxo de vídeo. Aplica-se quando Type é video.

SubtitleGroup

string

Grupo de legendas deste fluxo de vídeo. Aplica-se quando Type é video ou hybrid.

Name

string

Atributo NAME no manifesto HLS. Obrigatório quando Type é audio ou subtitle.

Group

string

Atributo GROUP-ID no manifesto HLS. Aplica-se quando Type é audio ou subtitle.

O padrão é o valor de Type.

Language

string

Atributo LANGUAGE no manifesto HLS. Deve estar em conformidade com a RFC 5646. Aplica-se quando Type é audio ou subtitle.

Default

boolean

Define se este é o fluxo padrão. Aplica-se quando Type é audio.

AutoSelect

boolean

Define se o fluxo é selecionado automaticamente. Aplica-se quando Type é audio.

Forced

boolean

Define se a reprodução é forçada. Aplica-se quando Type é audio.

Caso de uso 1: Transcodificar arquivos multibitrate

{
    "Config": {
        "Inputs": [
            {
                "Name": "video",
                "InputFile": {
                    "Type": "OSS",
                    "Url": "https://<Bucket>.<OSS public endpoint>/<video_file_chinese>"
                }
            },
            {
                "Name": "EnglishAudio",
                "InputFile": {
                    "Type": "OSS",
                    "Url": "https://<Bucket>.<OSS public endpoint>/<audio_file_english>"
                }
            },
            {
                "Name": "ChineseSubtitle",
                "InputFile": {
                    "Type": "OSS",
                    "Url": "https://<Bucket>.<OSS public endpoint>/<subtitle_file_chinese>"
                }
            },
            {
                "Name": "EnglishSubtitle",
                "InputFile": {
                    "Type": "OSS",
                    "Url": "https://<Bucket>.<OSS public endpoint>/<subtitle_file_english>"
                }
            }
        ],
        "OutputGroups": [
            {
                "Name": "Hls",
                "GroupConfig": {
                    "Type": "Hls",
                    "OutputFileBase": {
                        "Type": "OSS",
                        "Url": "https://<Bucket>.<OSS public endpoint>/<URI>/"
                    },
                    "ManifestName": "<m3u8_filename>"
                },
                "Outputs": [
                    {
                        "Name": "720P",
                        "OutputFileName": "video/720p/720p",
                        "TemplateId": "Video-720P",
                        "HlsGroupConfig": {
                            "Type": "Video"
                        }
                    },
                    {
                        "Name": "360P",
                        "OutputFileName": "video/360p/360p",
                        "TemplateId": "Video-360P",
                        "HlsGroupConfig": {
                            "Type": "Video"
                        }
                    },
                    {
                        "OutputFileName": "audio/chinese/chinese",
                        "TemplateId": "Audio-64Kbps",
                        "HlsGroupConfig": {
                            "Type": "Audio",
                            "Name": "ChineseAudio",
                            "Language": "zh",
                            "AutoSelect": true,
                            "Default": true
                        }
                    },
                    {
                        "InputRef": "ChineseSubtitle",
                        "OutputFileName": "subtitle/chinese/chinese",
                        "TemplateId": "any_template_id_in_the_job",
                        "OverrideParams": {
                            "Subtitles": [
                                {
                                    "Codec": "vtt"
                                }
                            ]
                        },
                        "HlsGroupConfig": {
                            "Type": "Subtitle",
                            "Name": "ChineseSubtitle",
                            "Language": "zh",
                            "AutoSelect": true,
                            "Default": true
                        }
                    },
                    {
                        "InputRef": "EnglishAudio",
                        "OutputFileName": "audio/english/english",
                        "TemplateId": "Audio-64Kbps",
                        "HlsGroupConfig": {
                            "Type": "Audio",
                            "Name": "EnglishAudio",
                            "Language": "en",
                            "AutoSelect": true,
                            "Default": false
                        }
                    },
                    {
                        "InputRef": "EnglishSubtitle",
                        "OutputFileName": "subtitle/english/english",
                        "TemplateId": "any_template_id_in_the_job",
                        "OverrideParams": {
                            "Subtitles": [
                                {
                                    "Codec": "vtt"
                                }
                            ]
                        },
                        "HlsGroupConfig": {
                            "Type": "Subtitle",
                            "Name": "EnglishSubtitle",
                            "Language": "en",
                            "AutoSelect": true,
                            "Default": false
                        }
                    }
                ]
            }
        ]
    }
}

Consulta de resultados do job

Chame a API GetMediaConvertJob para consultar os detalhes do job de transcodificação.

Evento de callback

EventType: MediaConvertComplete

Este evento não está disponível no console. Para configurá-lo, chame a API SetEventCallback.

Principais parâmetros de callback

Nome do parâmetro

Tipo

Obrigatório

Descrição

Name

String

Sim

Nome da tarefa principal.

JobId

String

Sim

ID do job.

Status

String

Sim

Status do job. Success indica que pelo menos um sub-job foi concluído com êxito.

TriggerSource

String

Não

Origem do gatilho. API significa que o job foi enviado via API.

FinishTime

String

Não

Hora de conclusão do job. Mesmo formato de EventTime.

UserData

string

Não

Dados personalizados fornecidos no envio do job.

Exemplo

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