O ApsaraVideo Live fornece notificações de eventos para ingestão de transmissão ao vivo, gravação (incluindo gravação sob demanda), snapshots, moderação de conteúdo e recuperação de desastres de fluxo duplo. Este tópico descreve como configurar esses callbacks, lista os parâmetros e fornece exemplos.
Visão geral
O ApsaraVideo Live envia notificações de eventos por meio de callbacks HTTP. O protocolo HTTPS também é compatível. Para receber essas notificações, implante um serviço HTTP e configure uma URL de callback no console do ApsaraVideo Live ou via API.
HTTP GET: Quando ocorre um evento de ingestão ou interrupção de fluxo, o ApsaraVideo Live envia uma solicitação HTTP GET para sua URL de callback. Os detalhes do evento são entregues como parâmetros de URL.
HTTP POST: Para outros tipos de eventos, o ApsaraVideo Live envia uma solicitação HTTP POST para sua URL de callback. Os detalhes do evento são entregues no corpo JSON.
Alguns certificados SSL são incompatíveis. Se você encontrar problemas de certificado, tente usar um callback HTTP.
Observações de uso
Conectividade: Sua URL de callback deve ser acessível publicamente.
Timeout e novas tentativas: O serviço espera uma resposta dentro de 5 segundos. Caso a solicitação atinja o tempo limite, o sistema tentará novamente até 5 vezes, com intervalos de 1 segundo.
-
Escopo de domínio:
Configure callbacks de ingestão de fluxo e recuperação de fluxo duplo apenas para domínios de ingestão.
Configure callbacks de gravação, snapshot e moderação de conteúdo apenas para domínios de streaming.
Gerenciamento de callbacks
Callback de ingestão de fluxo
Este callback notifica sobre o status de ingestão de um domínio, incluindo ingestão bem-sucedida, interrupção de fluxo e exceções. Configure a URL de callback no console ou via API.
Configuração pelo console
Faça login no console do ApsaraVideo Live.
No painel de navegação à esquerda, escolha Feature Management > Callbacks.
Selecione o Ingest Domain que deseja configurar.
-
Na aba Callback Settings, ative a chave Stream Ingest Callbacks e configure os seguintes parâmetros:
Callback Type: Defina callbacks para eventos de ingestão e interrupção ou para eventos de exceção.
Callback URL: Seu endpoint público para receber as notificações. Eventos de ingestão e interrupção usam HTTP GET; eventos de exceção usam HTTP POST.
Callback Authentication: Escolha se deseja ativar a autenticação. Quando ativada, insira uma chave de autenticação. Para obter detalhes sobre o processo, consulte Autenticação de callback.
Clique em OK.
Configuração por API
|
API |
Descrição |
|
Adiciona uma configuração de callback de ingestão. |
|
|
Consulta uma configuração de callback de ingestão. |
|
|
Exclui uma configuração de callback de ingestão. |
Eventos de ingestão e interrupção
Lógica de callback
Para envio de fluxo, o ApsaraVideo Live envia um callback de ingestão bem-sucedida se a fonte ao vivo permanecer conectada por pelo menos dois segundos após o recebimento de uma mensagem OnPublish.
Se você utilizar pull de fluxo (em horário fixo ou sob demanda) para um domínio de streaming (Domínio B) e precisar de notificações, configure o callback de ingestão para o domínio de ingestão associado (Domínio A). A lógica permanece a mesma: uma vez estabelecida a conexão, o pull de fluxo será considerado bem-sucedido se a fonte ao vivo permanecer conectada por pelo menos dois segundos.
Não dependa exclusivamente das notificações de callback para determinar se um fluxo foi ingerido com sucesso. Recomendamos chamar a API para consultar a lista de fluxos online. Confirme se o fluxo está ativo antes de distribuir a URL de reprodução aos usuários.
Se o centro de transmissão ao vivo do ApsaraVideo Live não receber dados durante 10 segundos, o serviço encerrará automaticamente a conexão de ingestão.
Parâmetros
Parâmetro | Descrição |
action | Tipo de evento que acionou o callback.
|
ip | Endereço IP do cliente de ingestão. |
id | Nome do fluxo. |
app | Domínio de ingestão. Se nenhum domínio de ingestão estiver associado, este parâmetro retorna o domínio de streaming. |
appname | AppName do fluxo. |
time | Timestamp Unix, em segundos, de envio do callback. |
usrargs | Parâmetros de ingestão definidos pelo usuário. |
node | Ponto de presença (POP) ou servidor que recebe o fluxo. |
height | Altura do vídeo em pixels. Fornecida apenas no primeiro callback. |
width | Largura do vídeo em pixels. Fornecida apenas no primeiro callback. |
Exemplo de evento de ingestão
http://1.1.X.X?action=publish&ip=192.168.0.1&id=world&app=example.aliyundoc.com&appname=liveApp****&time=1609220385&usrargs={user-defined-parameters}&node=cdnvideocenter01020711****.cm3&height=720&width=1280
Exemplo de evento de interrupção
http://1.1.X.X?action=publish_done&ip=192.168.0.0&id=world&app=example.aliyundoc.com&appname=liveApp****&time=1609220385&usrargs={user-defined-parameters}&node=cdnvideocenter01020711****.cm3&height=720&width=1280
Eventos de exceção de ingestão
Parâmetros
|
Parâmetro |
Descrição |
|
action |
publish_exception_notify |
|
domain |
Domínio de ingestão. |
|
appname |
AppName do fluxo. |
|
stream |
Nome do fluxo. |
|
ip |
Endereço IP do cliente de ingestão. |
|
time |
Timestamp Unix, em segundos, de envio do callback. |
|
type |
Tipo de evento de exceção. |
|
event_time |
Timestamp Unix, em segundos, de ocorrência da exceção. |
Tipos de exceção
|
Código |
Tipo de evento |
|
1001 |
A URL contém caracteres inválidos. |
|
2001 |
O codec de vídeo está na lista de bloqueios. |
|
2002 |
O codec de vídeo não está na lista de permissões. |
|
2003 |
O codec de áudio está na lista de bloqueios. |
|
2004 |
O codec de áudio não está na lista de permissões. |
|
3001 |
Falha ao analisar o cabeçalho de áudio. |
|
3002 |
Falha ao analisar o cabeçalho de vídeo. |
|
3003 |
Falha ao analisar os metadados. |
|
4001 |
Largura e altura de vídeo inconsistentes. |
|
4002 |
Os metadados indicam ausência de dados de áudio, mas o fluxo contém dados de áudio. |
|
4003 |
Os dados reais de áudio e vídeo não correspondem ao cabeçalho. |
|
4004 |
Os metadados indicam ausência de dados de vídeo, mas o fluxo contém dados de vídeo. |
|
4005 |
O codec de áudio mudou durante a transmissão. |
|
4006 |
O codec de vídeo mudou durante a transmissão. |
|
4007 |
Um quadro de áudio foi recebido antes do cabeçalho de áudio. |
|
4008 |
Um quadro de vídeo foi recebido antes do cabeçalho de vídeo. |
|
5001 |
Jitter CTS excessivo. |
|
5002 |
Decoding Time Stamps (DTS) não monotônicos. |
|
5003 |
A diferença de timestamp entre áudio e vídeo é muito grande. |
|
5004 |
O incremento DTS de áudio é muito grande. |
|
5005 |
O incremento DTS de vídeo é muito grande. |
|
5006 |
O intervalo entre quadros de áudio recebidos é muito longo. |
|
5007 |
O intervalo entre quadros de vídeo recebidos é muito longo. |
|
5008 |
O intervalo de keyframes é muito longo. |
Exemplo de evento de exceção
{
"action": "publish_exception_notify",
"domain": "demo.aliyundoc.com",
"appname": "liveApp****",
"stream": "liveStream****",
"ip": "141.01.****",
"time": "1739760710",
"type": "5002",
"event_time": "1739760710"
}
Callback de gravação ao vivo
Os callbacks de gravação ao vivo notificam sobre o status da gravação, geração de arquivos e erros.
Configuração pelo console
Faça login no console do ApsaraVideo Live.
No painel de navegação à esquerda, escolha Feature Management > Callbacks.
Selecione o Streaming Domain que deseja configurar.
-
Na aba Callback Settings, ative a chave Recording Callbacks e configure os seguintes parâmetros:
Callback URL: Seu endpoint público para receber as notificações. Os callbacks de gravação usam solicitações HTTP POST.
Triggering Event: Selecione File Generation ou File Generation and Recording Status.
On-demand Callback URL: Se você configurou a gravação sob demanda, o serviço envia um callback HTTP para esta URL quando uma transmissão ao vivo começa. Seu servidor deve responder a essa solicitação para determinar se o fluxo deve ser gravado. Por padrão, este parâmetro é definido como
*, o que desativa o recurso de gravação sob demanda.Callback Authentication: Escolha se deseja ativar a autenticação. Quando ativada, insira uma chave de autenticação. Para obter detalhes sobre o processo, consulte Autenticação de callback.
Clique em OK.
Configuração por API
|
API |
Descrição |
|
Adiciona uma configuração de callback de gravação para um domínio. |
|
|
Consulta uma configuração de callback de gravação. |
|
|
Exclui uma configuração de callback de gravação para um domínio. |
Callback de status de gravação
Enviado quando uma sessão de gravação inicia ou pausa.
Parâmetros
Parâmetro | Descrição |
domain | Domínio de streaming da gravação. |
app | AppName do fluxo. |
stream | Nome do fluxo. |
event | Evento.
|
Exemplo
{
"domain": "demo.aliyundoc.com",
"app": "liveApp****",
"stream": "liveStream****",
"event": "record_started"
}
Callback de geração de arquivo
Enviado após a criação do arquivo, fornecendo detalhes como caminho, duração e timestamps.
Parâmetros
Parâmetro | Descrição |
domain | Domínio de streaming da gravação. |
app | AppName do fluxo. |
stream | Nome do fluxo. |
uri | Caminho relativo do arquivo de gravação no bucket do OSS ou do ApsaraVideo VOD. |
record_id | ID do arquivo de índice. |
file_url | URL completa do arquivo de gravação. |
duration | Duração do arquivo de gravação, em segundos. |
start_time | Hora de início da gravação, como timestamp Unix em segundos. |
stop_time | Hora de término da gravação, como timestamp Unix em segundos. |
is_finished | Indica se a gravação está concluída. Retornado apenas quando a transmissão ao vivo é gravada no ApsaraVideo VOD. |
oss_endpoint | Endpoint de armazenamento. |
oss_bucket | Nome do bucket de armazenamento. |
push_args | Parâmetros definidos pelo usuário na URL de ingestão que começam com Nota
|
Exemplo
Se a URL de ingestão for rtmp://demo.aliyundoc.com/liveApp****/liveStream****?callback_args1=value1&callback_myid=1231389741, o payload do callback será:
{
"domain": "demo.aliyundoc.com",
"app": "liveApp****",
"stream": "liveStream****",
"uri": "liveApp****/liveStream****/0_2017-03-08-23:09:46_2017-03-08-23:10:40.flv",
"file_url": "http://****.oss-****.aliyuncs.com/liveApp****/liveStream****/0_2017-03-08-23:09:46_2017-03-08-23:10:40.flv",
"duration": 69.403,
"start_time": 1488985786,
"stop_time": 1488985840,
"push_args": {
"callback_args1": "value1",
"callback_myid": "1231389741"
}
}
Callback de erro de gravação
Acionado por exceções no fluxo de origem ou falhas de escrita no armazenamento (OSS).
Parâmetros
Parâmetro | Descrição |
domain | Domínio de streaming da gravação. |
app | AppName do fluxo. |
stream | Nome do fluxo. |
event | Tipo de evento.
|
error_info | Informações de erro em formato JSON. Inclui os seguintes campos:
|
file_info | Informações do arquivo. Retornado apenas para
|
Exemplo de erro de gravação
{
"domain": "example.com",
"app": "live",
"stream": "stream123",
"event": "record_error",
"error_info": {
"code": "TsSegmenterFail",
"message": "ts segmenter error"
}
}
Códigos de erro
|
Código |
Mensagem |
Descrição |
|
BucketNotFound |
Bucket not found |
O bucket não existe ou foi excluído. |
|
AccessDenied |
Bucket not belong config userId |
O bucket não pertence à conta onde a configuração de gravação foi adicionada. |
|
StreamFormatError |
video stream format error |
O formato da transmissão ao vivo é inválido. |
|
UserDisable |
Unauthorized access to OSS by user |
O usuário não tem autorização para acessar o OSS ou a autorização foi revogada. |
Exemplo de erro de remuxing
{
"domain": "example.com",
"app": "live",
"stream": "stream123",
"event": "transformat_error",
"error_info": {
"code": "PermissionDenied.ResourceAccess",
"message": "MTS not authorized to operate on the OutputBucket"
},
"file_info": {
"uri": "record/live/stream123/2025-11-19-03-17-03_2025-11-19-03-28-39.flv",
"start_time": 1763493420,
"stop_time": 1763494119
}
}
Códigos de erro
|
Código |
Mensagem |
Descrição |
|
InvalidParameter.ResourceNotFound |
The resource operated cannot be found |
O bucket não existe ou foi excluído. |
|
InvalidParameter.ResourceContentBad |
The resource operated InputFile is bad |
Falha no remuxing devido a problemas na qualidade do fluxo de origem. |
|
PermissionDenied.ResourceAccess |
MTS not authorized to operate on the OutputBucket |
O usuário não tem autorização para acessar o OSS ou a autorização foi revogada. |
Callback de gravação sob demanda
A gravação sob demanda permite decidir programaticamente se uma transmissão ao vivo deve ser gravada com base nos metadados do fluxo.
Quando uma transmissão ao vivo corresponde ao modelo de gravação sob demanda pré-configurado (no nível de domínio, aplicativo ou fluxo), o serviço de gravação envia uma solicitação HTTP para sua URL de callback sob demanda com os detalhes do fluxo. Seu servidor deve responder para indicar se o fluxo deve ser gravado e fornecer configurações específicas.
Parâmetros da solicitação
Parâmetro | Tipo | Descrição |
domain | String | Domínio de streaming. |
app | String | AppName do fluxo. |
stream | String | Nome do fluxo. |
codec | String | Codec. Valores válidos:
|
vbitrate | String | Taxa de bits de vídeo. Unidade: kbps. |
Exemplo de solicitação
GET /?app=seq_all&domain=demo.aliyundoc.com&stream=ondemand8&vbitrate=2000&codec=h264 HTTP/1.1
Host: pull.aliyundoc.com
User-Agent: Go-http-client/1.1
Accept-Encoding: gzip
Parâmetros da resposta
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
ApiVersion |
String |
Não |
Versão da API. O valor padrão é 1.0. |
|
NeedRecord |
Boolean |
Sim |
Indica se o fluxo deve ser gravado. |
|
Interval |
JSONObject |
Não |
Ciclo de gravação para um formato específico. Intervalo: 5 a 21600. Unidade: segundos. |
|
Format |
JSONArray |
Não |
Formato de gravação. Formatos compatíveis: MP4, FLV e M3U8. |
Exemplo de resposta
{
"ApiVersion": "1.0",
"NeedRecord": true,
"Interval": {
"Mp4": 300,
"Flv": 120,
"M3U8": 180
},
"Format": ["mp4","flv"]
}
Tratamento da resposta
O serviço de gravação processa sua resposta para substituir as configurações existentes:
Interval: O valor de Interval fornecido substitui o ciclo de gravação configurado no modelo.Format: O serviço calcula a interseção entre o Format solicitado e os formatos pré-configurados no modelo. Se não houver formatos comuns, o fluxo não será gravado.
Um código de status HTTP diferente de 200 indica falha na chamada ao seu endpoint de API.
O corpo da resposta não pode exceder 2.048 bytes. O sistema trunca qualquer conteúdo além desse limite por motivos de segurança.
Callback de snapshot ao vivo
O ApsaraVideo Live é compatível com notificações de eventos para snapshots ao vivo. Configure a URL de callback no console ou via API.
Configuração pelo console
Faça login no console do ApsaraVideo Live.
No painel de navegação à esquerda, escolha Feature Management > Callbacks.
Selecione o Streaming Domain que deseja configurar.
-
Na aba Callback Settings, ative a chave Snapshot Callbacks e configure os seguintes parâmetros:
Callback URL: Seu endpoint público para receber as notificações. Os callbacks de snapshot usam solicitações HTTP POST.
Callback Authentication: Escolha se deseja ativar a autenticação. Quando ativada, insira uma chave de autenticação. Para obter detalhes sobre o processo, consulte Autenticação de callback.
Clique em OK.
Configuração por API
|
API |
Descrição |
|
Adiciona uma configuração de callback de snapshot ao vivo. |
|
|
Modifica uma configuração de callback de snapshot ao vivo. |
|
|
Consulta a configuração de callback de snapshot ao vivo. |
|
|
Exclui uma configuração de callback de snapshot ao vivo. |
Parâmetros do callback de snapshot
|
Parâmetro |
Descrição |
|
Event |
Tipo de evento. O valor é |
|
DomainName |
Domínio de streaming. |
|
AppName |
AppName do fluxo. |
|
StreamName |
Nome do fluxo. |
|
OssBucket |
Nome do bucket do OSS que armazena os snapshots. |
|
OssEndpoint |
Endpoint do OSS onde os snapshots são armazenados. |
|
OssObject |
Nome do arquivo de snapshot no bucket do OSS. |
|
CreateTime |
Timestamp de criação do snapshot. |
|
SnapshotUrl |
URL completa do arquivo de snapshot no bucket do OSS. |
|
Size |
Tamanho da imagem em bytes. |
|
Width |
Largura da imagem em pixels. |
|
Height |
Altura da imagem em pixels. |
Exemplo
{
"Event": "Snapshot",
"DomainName": "demo.aliyundoc.com",
"AppName": "liveApp****",
"StreamName": "liveStream****",
"OssBucket": "liveBucket****",
"OssEndpoint": "oss-cn-shan****.aliyuncs.com",
"OssObject": "1****.jpg",
"CreateTime": "2015-12-01T17:36:00Z",
"SnapshotUrl": "http://liveBucket****.oss-cn-shan****.aliyuncs.com/1****.jpg",
"Size": "36291",
"Width": "1280",
"Height": "720"
}
Callback de moderação de conteúdo
O ApsaraVideo Live é compatível com notificações de eventos para resultados de moderação de vídeo e áudio. Configure a URL de callback no console ou via API.
Callback de moderação de vídeo
Acionado apenas para conteúdo de vídeo sinalizado como problemático.
Configuração pelo console
Faça login no console do ApsaraVideo Live.
No painel de navegação à esquerda, escolha Feature Management > Callbacks.
Selecione o Streaming Domain que deseja configurar.
Na aba Callback Settings, ative a chave Video Moderation Callbacks e configure a URL de callback. A URL deve apontar para seu próprio endpoint. Quando um evento de moderação de vídeo for acionado, o ApsaraVideo Live enviará uma solicitação HTTP POST para a URL especificada, com os detalhes do evento no corpo JSON.
Clique em OK.
Configuração por API
|
API |
Descrição |
|
Adiciona uma configuração de callback de moderação de vídeo. |
|
|
Consulta uma configuração de callback de moderação de vídeo. |
|
|
Modifica uma configuração de callback de moderação de vídeo. |
|
|
Exclui uma configuração de callback de moderação de vídeo. |
Parâmetros do callback
A notificação fornece detalhes da moderação e o local de armazenamento do snapshot capturado do conteúdo sinalizado.
|
Parâmetro |
Tipo |
Descrição |
|
DomainName |
String |
Domínio de streaming. |
|
AppName |
String |
AppName do fluxo. |
|
StreamName |
String |
Nome do fluxo. |
|
OssEndpoint |
String |
Endpoint do OSS. |
|
OssBucket |
String |
Bucket do OSS. |
|
OssObject |
String |
Nome do objeto. |
|
Result |
JSONArray |
Resultados da moderação. Para mais informações, consulte Result. |
Result
Parâmetro | Tipo | Descrição |
BizType | String | Tipo de negócio. Pode ser usado para selecionar um modelo. Por padrão, o valor é o nome do domínio. |
Scene | String | Cena de detecção.
|
Label | String | Categoria do resultado. As categorias variam conforme a cena de detecção. Categorias para
Categorias para
Categorias para
Categorias para
Categorias para
|
Rate | Float | Pontuação de confiança. Intervalo: 0 a 100. Nota Este valor serve apenas como referência. Não o utilize em sua lógica de negócios. Use o resultado |
Extent | String | Parâmetro reservado. |
Esta versão destina-se a novos usuários por padrão. Usuários existentes permanecem em sua versão atual. Para usar esta versão, abra um ticket.
Exemplo
{
"DomainName": "demo.aliyundoc.com",
"AppName": "liveApp****",
"StreamName": "liveStream****",
"OssEndpoint": "oss-cn-hang****.aliyuncs.com",
"OssBucket": "liveBucket****",
"OssObject": "example.jpg",
"Result": [
{
"BizType": "demo.aliyundoc.com",
"Result": [
{"Label": "Porn", "Rate": 11, "Suggestion": "review", "Scene": "porn", "Extent": {}},
{"Label": "Ad", "Rate": 11, "Suggestion": "review", "Scene": "ad", "Extent": {}}
]
}
]
}
Callback de moderação de áudio
Acionado apenas para conteúdo de áudio sinalizado como problemático.
Configuração pelo console
Faça login no console do ApsaraVideo Live.
No painel de navegação à esquerda, escolha Feature Management > Callbacks.
Selecione o Streaming Domain que deseja configurar.
Na aba Callback Settings, ative a chave Audio Moderation Callbacks e configure a URL de callback. A URL deve apontar para seu próprio endpoint. Quando um evento de moderação de áudio for acionado, o ApsaraVideo Live enviará uma solicitação HTTP POST para a URL especificada, com os detalhes do evento no corpo JSON.
Clique em OK.
Configuração por API
|
API |
Descrição |
|
Adiciona uma configuração de callback de moderação de áudio. |
|
|
Exclui uma configuração de callback de moderação de áudio. |
|
|
Modifica uma configuração de callback de moderação de áudio. |
|
|
Consulta uma configuração de callback de moderação de áudio. |
Parâmetros do callback
A notificação inclui o texto transcrito do áudio problemático e as informações contextuais do minuto seguinte.
|
Parâmetro |
Tipo |
Descrição |
|
DomainName |
String |
Domínio de streaming. |
|
AppName |
String |
AppName do fluxo. |
|
StreamName |
String |
Nome do fluxo. |
|
Timestamp |
Int |
Timestamp, em segundos. |
|
Result |
JSONArray |
Resultados da moderação. Para mais informações, consulte Result. |
Result
Parâmetro | Tipo | Descrição |
Scene | String | Cena de detecção. |
Label | String | Categoria do resultado da detecção. Valores válidos:
|
Suggestion | String | Ação sugerida. Valores válidos:
|
Rate | Float | Pontuação de confiança. Intervalo: 0 a 100. Nota Este valor serve apenas como referência. Não o utilize em sua lógica de negócios. Use o resultado |
Details | JSONArray | Detalhes do áudio transcrito. O array contém um ou mais elementos, cada um correspondendo a uma frase. Para a estrutura, consulte Detail. |
Detail
Parâmetro | Tipo | Descrição |
StartTime | Int | Timestamp de início da frase, em segundos. |
EndTime | Int | Timestamp de término da frase, em segundos. |
Text | String | Texto transcrito. |
Label | String | Categoria do resultado da detecção. Valores válidos:
|
Exemplo
{
"DomainName": "example.aliyundoc.com",
"AppName": "liveApp****",
"StreamName": "5d9747eba39b44769852d276f9ff****",
"Timestamp": 1572248095,
"Result": [
{
"Scene": "antispam",
"Label": "ad",
"Suggestion": "block",
"Rate": 99.91,
"Details": [
{
"StartTime": 1572248023,
"EndTime": 1572248040,
"Text": "The hotel offers 120 days of free accommodation. It can be shared with friends and family. Visit the reception center at No. 96 Tuanjie Street, Mangshi. Hotline: 2285699.",
"Label": "ad"
},
{
"StartTime": 1572248040,
"EndTime": 1572248070,
"Text": "Discover a rare collection of classic villas nestled in the heart of the Hot Spring Resort Town. Located adjacent to the prestigious Longduo Hot Springs and the historic Lianghe Golden Pagoda, this is where luxury meets nature.",
"Label": "normal"
},
{
"StartTime": 1572248072,
"EndTime": 1572248077,
"Text": "Joyful times and cozy days, made all the more carefree with your beautiful company.",
"Label": "normal"
},
{
"StartTime": 1572248078,
"EndTime": 1572248086,
"Text": "fme043 A little break from the hustle with cozy music and movies.",
"Label": "normal"
}
]
}
]
}
Callback de recuperação de desastres de fluxo duplo
Este callback notifica quando ocorre uma troca de fluxo para failover.
Configuração pelo console
Faça login no console do ApsaraVideo Live.
No painel de navegação à esquerda, escolha Feature Management > Callbacks.
Selecione o Ingest Domain para configurar.
Na aba Callback Settings, ative a chave Dual-stream Disaster Recovery Callbacks e configure a URL de callback.
Clique em OK.
Parâmetros do callback
|
Parâmetro |
Descrição |
|
action |
Tipo de evento. Valor fixo: |
|
domain |
Domínio de ingestão. |
|
appname |
AppName do fluxo. |
|
streamname |
Nome do fluxo. |
|
upstreamsequence |
Identificador do fluxo primário após a troca. |
|
upstreamip |
Endereço IP do cliente que publica o fluxo primário após a troca. |
|
upstreamtime |
Hora de início da ingestão do fluxo primário após a troca. Timestamp Unix em segundos. |
|
changereason |
Motivo da troca. |
|
changetime |
Hora em que a troca de fluxo ocorreu. Timestamp Unix em segundos. |
|
time |
Hora em que a notificação de callback foi gerada. Timestamp Unix em segundos. |
Exemplo
{
"action": "multistream_set_master_result",
"domain": "demo.aliyundoc.com",
"appname": "liveApp****",
"streamname": "liveStream****",
"upstreamsequence": "main",
"upstreamip": "203.**.***.10",
"upstreamtime": 17*****710,
"changereason": "merge_cut_manually",
"changetime": 17*****705,
"time": 17*****706
}
Autenticação de callback
O ApsaraVideo Live é compatível com autenticação de callback para eventos de ingestão de fluxo, gravação, snapshots e recuperação de desastres de fluxo duplo. Quando ativada, a autenticação funciona da seguinte forma:
O ApsaraVideo Live inclui os cabeçalhos ALI-LIVE-TIMESTAMP e ALI-LIVE-SIGNATURE nas solicitações de callback, permitindo que seu servidor receptor verifique se a solicitação é autêntica e não foi adulterada.
Cálculo do ALI-LIVE-SIGNATURE
ALI-LIVE-SIGNATURE=MD5SUM(MD5CONTENT)
MD5CONTENT=Domain|ALI-LIVE-TIMESTAMP Value|Auth KEY
onde:
-
Domain: A origem do domínio varia conforme o tipo de callback:Para callbacks de ingestão de fluxo e recuperação de desastres de fluxo duplo: Use o domínio de ingestão onde a URL de callback está configurada.
Para callbacks de gravação e snapshot: Use o domínio da URL de callback. Por exemplo, se a URL de callback for
https://learn.aliyundoc.com/your/callback, o valor do domínio serálearn.aliyundoc.com.
ALI-LIVE-TIMESTAMP: Timestamp UNIX de envio da solicitação. Unidade: segundo.Auth KEY: Chave de autenticação configurada para a URL de callback correspondente.
Autenticação pelo servidor receptor
Ao receber mensagens de callback, o servidor receptor determina o domínio de callback com base no tipo de callback. Em seguida, concatena o domínio de callback, o valor de ALI-LIVE-TIMESTAMP e a chave de autenticação, calcula o hash MD5 dessa string e compara o valor calculado com o valor do cabeçalho ALI-LIVE-SIGNATURE na solicitação. Se os valores não coincidirem, a solicitação não será autorizada.
Registros de callback
O console do ApsaraVideo Live permite visualizar o histórico e os payloads de eventos de callback de ingestão e gravação de transmissões ao vivo. Outros tipos de callback não são compatíveis.
Limitações
Configurações de callback novas ou atualizadas levam até 5 minutos para entrar em vigor. Após esse período, os registros de callback aparecem conforme esperado.
Estão disponíveis até 1.000 registros de callback dos últimos 7 dias.
Passos
Faça login no console do ApsaraVideo Live.
No painel de navegação à esquerda, clique em Feature Management > Callbacks.
Selecione o domínio de ingestão ou streaming onde a URL de callback está configurada.
Na aba Callback Records, selecione Stream Ingest Callbacks ou Recording Callbacks.
Filtre os registros de callback por intervalo de tempo, AppName e StreamName.