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 de callback e fornece exemplos.
Visão geral
O ApsaraVideo Live envia notificações de eventos por meio de callbacks HTTP. O protocolo HTTPS também é suportado. Para receber essas notificações, você precisa implantar um service HTTP e configurar uma URL de callback no console do ApsaraVideo Live ou usando uma 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, com os detalhes do evento entregues como parâmetros de URL.
HTTP POST: Quando outros tipos de eventos ocorrem, o ApsaraVideo Live envia uma solicitação HTTP POST para sua URL de callback, com os detalhes do evento entregues no corpo JSON.
Alguns certificados SSL são incompatíveis. Se você encontrar problemas de certificado, tente usar um callback HTTP.
Notas de uso
Conectividade: Sua URL de callback deve ser acessível publicamente.
Timeout e novas tentativas: O service espera uma resposta dentro de 5 segundos. Se a solicitação atingir o tempo limite, o sistema tentará novamente até 5 vezes em intervalos de 1 segundo.
-
Escopo de domínio:
Os callbacks para ingestão de fluxo e recuperação de fluxo duplo podem ser configurados apenas para domínios de ingestão.
Os callbacks para gravação, snapshot e moderação de conteúdo podem ser configurados apenas para domínios de streaming.
Gerenciamento de callbacks
Callback de ingestão de fluxo
Este callback notifica você sobre o status de ingestão de um domínio, incluindo ingestão bem-sucedida, interrupção de fluxo e exceções de ingestão. Configure a URL de callback no console ou usando uma 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 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, enquanto eventos de exceção usam HTTP POST.
Callback Authentication: Selecione se deseja ativar a autenticação. Quando ativada, insira uma chave de autenticação. Para obter detalhes sobre o processo de autenticação, consulte Callback authentication.
Clique em OK.
Outras formas de verificar a ingestão bem-sucedida
Além do callback de ingestão, você pode usar os seguintes métodos para verifique se um fluxo foi ingerido com sucesso:
Ouça o evento canplay em um player web: após inicializar um player web, ingira o fluxo e reproduza-o. Se o fluxo existir e puder ser reproduzido, o evento canplay será acionado. Caso contrário, um erro será retornado.
Verifique o fluxo na página de demonstração RTS: na aba ingest, insira a URL de ingestão, crie um fluxo local e inicie a ingestão. Mude para a aba streaming, insira a URL de streaming (que deve usar o protocolo artc://) e inicie a reprodução para verifique se o fluxo é reproduzido normalmente.
Esses métodos são verificações auxiliares. Recomendamos o uso do callback de ingestão para determinar o status da ingestão.
Configuração via 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 source ao vivo permanecer conectada por pelo menos dois segundos após o recebimento de uma mensagem OnPublish.
Se você usar pull de fluxo (tempo fixo ou sob demanda) para um domínio de streaming (Domínio B) e precisar de notificações de callback, configure o callback de ingestão de fluxo para o domínio de ingestão associado (Domínio A). A lógica permanece consistente: uma vez estabelecida a conexão, o pull de fluxo é considerado bem-sucedido se a source 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 nenhum dado for recebido pelo centro ao vivo do ApsaraVideo Live por 10 segundos, o service encerrará automaticamente a conexão de ingestão.
Parâmetros
Parâmetro | Descrição |
action | O tipo de evento que acionou o callback.
|
ip | O endereço IP do cliente de ingestão. |
id | O nome do fluxo. |
app | O domínio de ingestão. Se nenhum domínio de ingestão estiver associado, este parâmetro retorna o domínio de streaming. |
appname | O AppName do fluxo. |
time | O timestamp Unix, em segundos, quando o callback foi enviado. |
usrargs | Parâmetros de ingestão definidos pelo usuário. |
node | O ponto de presença (POP) ou servidor que recebe o fluxo. |
height | A altura do vídeo em pixels, fornecida apenas no primeiro callback. |
width | A 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 |
O domínio de ingestão. |
|
appname |
O AppName do fluxo. |
|
stream |
O nome do fluxo. |
|
ip |
O endereço IP do cliente de ingestão. |
|
time |
O timestamp Unix, em segundos, quando o callback foi enviado. |
|
type |
O tipo de evento de exceção. |
|
event_time |
O timestamp Unix, em segundos, quando a exceção ocorreu. |
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 você sobre o status da gravação, geração de arquivos e erros de gravação.
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 service 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: Selecione se deseja ativar a autenticação. Quando ativada, insira uma chave de autenticação. Para obter detalhes sobre o processo de autenticação, consulte Callback authentication.
Clique em OK.
Configuração via 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 | O domínio de streaming para a gravação. |
app | O AppName do fluxo. |
stream | O nome do fluxo. |
event | O 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 do arquivo, duração e timestamps.
Parâmetros
Parâmetro | Descrição |
domain | O domínio de streaming para a gravação. |
app | O AppName do fluxo. |
stream | O nome do fluxo. |
uri | O caminho relativo do arquivo de gravação no seu bucket OSS ou bucket ApsaraVideo VOD. |
record_id | O ID do arquivo de índice. |
file_url | A URL completa do arquivo de gravação. |
duration | A duração do arquivo de gravação, em segundos. |
start_time | A hora de início da gravação, como um timestamp Unix em segundos. |
stop_time | A hora de término da gravação, como um timestamp Unix em segundos. |
is_finished | Indica se a gravação está concluída. Este parâmetro é retornado apenas quando a transmissão ao vivo é gravada no ApsaraVideo VOD. |
oss_endpoint | O endpoint de armazenamento. |
oss_bucket | O nome do bucket de armazenamento. |
push_args | Parâmetros definidos pelo usuário da URL de ingestão começando 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á o seguinte:
{
"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 source ou falhas de gravação no armazenamento (OSS).
Parâmetros
Parâmetro | Descrição |
domain | O domínio de streaming para a gravação. |
app | O AppName do fluxo. |
stream | O nome do fluxo. |
event | O tipo de evento.
|
error_info | As informações de erro no formato JSON. Inclui os seguintes campos:
|
file_info | As informações do arquivo. Este parâmetro é 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 está autorizado a 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 |
O remuxing falhou devido a problemas na qualidade do fluxo de source. |
|
PermissionDenied.ResourceAccess |
MTS not authorized to operate on the OutputBucket |
O usuário não está autorizado a acessar o OSS ou a autorização foi revogada. |
Callback de gravação sob demanda
A gravação sob demanda permite que você decida programaticamente se deve gravar uma transmissão ao vivo com base nos metadados do fluxo.
Quando uma transmissão ao vivo corresponde ao seu modelo de gravação sob demanda pré-configurado (no nível de domínio, aplicativo ou fluxo), o service de gravação envia uma solicitação HTTP para o seu On-demand callback URL com os detalhes do fluxo. Seu servidor deve então responder para indicar se o fluxo deve ser gravado e fornecer configurações específicas de gravação.
Parâmetros da solicitação
Parâmetro | Tipo | Descrição |
domain | String | O domínio de streaming. |
app | String | O AppName do fluxo. |
stream | String | O nome do fluxo. |
codec | String | O codec. Valores válidos:
|
vbitrate | String | A 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 |
A versão da API. O valor padrão é 1.0. |
|
NeedRecord |
Boolean |
Sim |
Indica se o fluxo deve ser gravado. |
|
Interval |
JSONObject |
Não |
O ciclo de gravação para um formato específico. Intervalo: 5 a 21600. Unidade: segundos. |
|
Format |
JSONArray |
Não |
O formato de gravação. Formatos suportados: 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 service de gravação processa sua resposta para substituir as configurações existentes:
Interval: O valor de Interval fornecido substituirá o ciclo de gravação configurado no modelo de gravação.Format: O service calcula a interseção entre o Format solicitado e os formatos pré-configurados no modelo de gravação. Se não houver formatos comuns, o fluxo não será gravado.
Um código de status HTTP diferente de 200 indica uma 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 suporta notificações de eventos para snapshots ao vivo. Você pode configurar 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: Selecione se deseja ativar a autenticação. Quando ativada, insira uma chave de autenticação. Para obter detalhes sobre o processo de autenticação, consulte Callback authentication.
Clique em OK.
Configuração via 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 |
O tipo de evento. O valor é |
|
DomainName |
O domínio de streaming. |
|
AppName |
O AppName do fluxo. |
|
StreamName |
O nome do fluxo. |
|
OssBucket |
O nome do bucket OSS que armazena os snapshots. |
|
OssEndpoint |
O endpoint OSS onde os snapshots são armazenados. |
|
OssObject |
O nome do arquivo de snapshot no bucket OSS. |
|
CreateTime |
O timestamp quando o snapshot foi criado. |
|
SnapshotUrl |
A URL completa do arquivo de snapshot no bucket OSS. |
|
Size |
O tamanho da imagem em bytes. |
|
Width |
A largura da imagem em pixels. |
|
Height |
A 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 suporta notificações de eventos para resultados de moderação de vídeo e áudio. Você pode configurar 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 entregues no corpo JSON.
Clique em OK.
Configuração via 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 |
O domínio de streaming. |
|
AppName |
String |
O AppName do fluxo. |
|
StreamName |
String |
O nome do fluxo. |
|
OssEndpoint |
String |
O endpoint OSS. |
|
OssBucket |
String |
O bucket OSS. |
|
OssObject |
String |
O nome do objeto. |
|
Result |
JSONArray |
Os resultados da moderação. Para mais informações, consulte Result. |
Result
Parâmetro | Tipo | Descrição |
BizType | String | O tipo de negócio. Este parâmetro pode ser usado para selecionar um modelo. Por padrão, o valor é o nome do domínio. |
Scene | String | A cena de detecção.
|
Label | String | A categoria do resultado. As categorias variam com base na cena de detecção. Categorias para
Categorias para
Categorias para
Categorias para
Categorias para
|
Rate | Float | A pontuação de confiança. Intervalo: 0 a 100. Nota Este valor é apenas para referência. Não use este valor em sua lógica de negócios. Use o resultado |
Extent | String | Um parâmetro reservado. |
Esta versão é destinada a novos usuários por padrão. Usuários existentes permanecem em sua versão atual. Para usar esta versão, envie 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 vídeo for acionado, o ApsaraVideo Live enviará uma solicitação HTTP POST para a URL especificada, com os detalhes do evento entregues no corpo JSON.
Clique em OK.
Configuração via 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 |
O domínio de streaming. |
|
AppName |
String |
O AppName do fluxo. |
|
StreamName |
String |
O nome do fluxo. |
|
Timestamp |
Int |
O timestamp, em segundos. |
|
Result |
JSONArray |
Os resultados da moderação. Para mais informações, consulte Result. |
Result
Parâmetro | Tipo | Descrição |
Scene | String | A cena de detecção. |
Label | String | A categoria do resultado da detecção. Valores válidos:
|
Suggestion | String | A ação sugerida. Valores válidos:
|
Rate | Float | A pontuação de confiança. Intervalo: 0 a 100. Nota Este valor é apenas para referência. Não use este valor em sua lógica de negócios. Use o resultado |
Details | JSONArray | Detalhes do áudio transcrito. O array contém um ou mais elementos, e cada elemento corresponde a uma frase. Para a estrutura, consulte Detail. |
Detail
Parâmetro | Tipo | Descrição |
StartTime | Int | O timestamp de início da frase, em segundos. |
EndTime | Int | O timestamp de término da frase, em segundos. |
Text | String | O texto transcrito. |
Label | String | A 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 você 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 |
O tipo de evento. Valor fixo: |
|
domain |
O domínio de ingestão. |
|
appname |
O AppName do fluxo. |
|
streamname |
O nome do fluxo. |
|
upstreamsequence |
O identificador do fluxo principal após a troca. |
|
upstreamip |
O endereço IP do cliente publicando o fluxo principal após a troca. |
|
upstreamtime |
A hora de início da ingestão do fluxo principal após a troca. Este é um timestamp Unix em segundos. |
|
changereason |
O motivo da troca. |
|
changetime |
A hora em que a troca de fluxo ocorreu. Este é um timestamp Unix em segundos. |
|
time |
A hora em que a notificação de callback foi gerada. Este é um 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 suporta 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 em suas solicitações de callback, para que seu servidor receptor possa verifique se a solicitação de callback é autêntica e não foi adulterada.
Cálculo de ALI-LIVE-SIGNATURE
ALI-LIVE-SIGNATURE=MD5SUM(MD5CONTENT)
MD5CONTENT=Domain|ALI-LIVE-TIMESTAMP Value|Auth KEY
onde:
-
Domain: A source 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: O timestamp UNIX quando a solicitação foi enviada. Unidade: segundo.Auth KEY: A chave de autenticação configurada para a URL de callback correspondente.
Autenticação do servidor receptor
Ao receber mensagens de callback, o servidor receptor determina o domínio de callback com base no tipo de callback. Em seguida, ele 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 é 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 suportados.
Limitações
Configurações de callback novas ou atualizadas levam até 5 minutos para entrar em vigor. Após entrarem em vigor, os registros de callback aparecem conforme esperado.
Até 1.000 registros de callback dos últimos 7 dias estão disponíveis.
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.
Você pode filtrar os registros de callback por intervalo de tempo, AppName e StreamName.