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
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
Armazenamento: Vincule um bucket do OSS ao IMS. Configurar um local de armazenamento.
Callbacks: Configure callbacks HTTP ou MNS para receber notificações sobre o status dos jobs. Visão geral dos eventos de callback.
Configuração do modelo de transcodificação
Processo de configuração
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.
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) |
|
|
Video-540P |
H.264 |
m3u8(.ts) |
|
|
Video-720P |
H.264 |
m3u8(.ts) |
|
|
Video-1080P |
H.264 |
m3u8(.ts) |
|
H.265
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) |
|
|
Video-540P |
H.265 |
m3u8(.fmp4) |
|
|
Video-720P |
H.265 |
m3u8(.fmp4) |
|
|
Video-1080P |
H.265 |
m3u8(.fmp4) |
|
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:
|
|
Bandwidth |
string |
Largura de banda. Opcional. O padrão é a taxa de bits (bps). Aplica-se quando |
|
AudioGroup |
string |
Grupo de áudio deste fluxo de vídeo. Aplica-se quando |
|
SubtitleGroup |
string |
Grupo de legendas deste fluxo de vídeo. Aplica-se quando |
|
Name |
string |
Atributo |
|
Group |
string |
Atributo O padrão é o valor de |
|
Language |
string |
Atributo |
|
Default |
boolean |
Define se este é o fluxo padrão. Aplica-se quando |
|
AutoSelect |
boolean |
Define se o fluxo é selecionado automaticamente. Aplica-se quando |
|
Forced |
boolean |
Define se a reprodução é forçada. Aplica-se quando |
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. |
|
|
TriggerSource |
String |
Não |
Origem do gatilho. |
|
|
FinishTime |
String |
Não |
Hora de conclusão do job. Mesmo formato de |
|
|
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\"}"
}