Todos os produtos
Search
Central de documentação

ApsaraVideo Live:Callback de eventos

Última atualização: Aug 19, 2026

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.

Nota

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

  1. Faça login no console do ApsaraVideo Live.

  2. No painel de navegação à esquerda, escolha Feature Management > Callbacks.

  3. Selecione o Ingest Domain que deseja configurar.

  4. 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.

  5. 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

SetLiveStreamsNotifyUrlConfig

Adiciona uma configuração de callback de ingestão.

DescribeLiveStreamsNotifyUrlConfig

Consulta uma configuração de callback de ingestão.

DeleteLiveStreamsNotifyUrlConfig

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.

Nota

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.

  • publish: O fluxo foi ingerido.

  • publish_done: O fluxo foi interrompido.

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

  1. Faça login no console do ApsaraVideo Live.

  2. No painel de navegação à esquerda, escolha Feature Management > Callbacks.

  3. Selecione o Streaming Domain que deseja configurar.

  4. 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.

  5. Clique em OK.

Configuração via API

API

Descrição

AddLiveRecordNotifyConfig

Adiciona uma configuração de callback de gravação para um domínio.

DescribeLiveRecordNotifyConfig

Consulta uma configuração de callback de gravação.

DeleteLiveRecordNotifyConfig

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.

  • record_started: A gravação começou.

  • record_paused: A gravação foi pausada.

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 callback_ (como callback_arg1 e callback_myid).

Nota
  • Parâmetros personalizados não são suportados para fluxos transcodificados.

  • Se vários valores forem passados para o mesmo parâmetro (por exemplo, callback_arg1=v1&callback_arg1=v2), apenas o primeiro valor será incluído no callback ("callback_args1": "value1").

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.

  • record_error: Ocorreu um erro de gravação.

  • transformat_error: Ocorreu um erro de remuxing.

error_info

As informações de erro no formato JSON. Inclui os seguintes campos:

  • code: O código de erro.

  • message: A mensagem de erro.

file_info

As informações do arquivo. Este parâmetro é retornado apenas para transformat_error. Inclui os seguintes campos:

  • uri: O endereço de armazenamento do arquivo remuxado.

  • start_time: A hora de início da gravação do arquivo.

  • stop_time: A hora de término da gravação do arquivo.

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:

  • h264

  • h265

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

  1. Faça login no console do ApsaraVideo Live.

  2. No painel de navegação à esquerda, escolha Feature Management > Callbacks.

  3. Selecione o Streaming Domain que deseja configurar.

  4. 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.

  5. Clique em OK.

Configuração via API

API

Descrição

AddLiveSnapshotNotifyConfig

Adiciona uma configuração de callback de snapshot ao vivo.

UpdateLiveSnapshotNotifyConfig

Modifica uma configuração de callback de snapshot ao vivo.

DescribeLiveSnapshotNotifyConfig

Consulta a configuração de callback de snapshot ao vivo.

DeleteLiveSnapshotNotifyConfig

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 é Snapshot.

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
  1. Faça login no console do ApsaraVideo Live.

  2. No painel de navegação à esquerda, escolha Feature Management > Callbacks.

  3. Selecione o Streaming Domain que deseja configurar.

  4. 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.

  5. Clique em OK.

Configuração via API

API

Descrição

AddLiveDetectNotifyConfig

Adiciona uma configuração de callback de moderação de vídeo.

DescribeLiveDetectNotifyConfig

Consulta uma configuração de callback de moderação de vídeo.

UpdateLiveDetectNotifyConfig

Modifica uma configuração de callback de moderação de vídeo.

DeleteLiveDetectNotifyConfig

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.

  • porn: Pornografia.

  • terrorism: Terrorismo e conteúdo politicamente sensível.

  • ad: Violações de texto e imagem.

  • live: Cenas indesejáveis.

Label

String

A categoria do resultado. As categorias variam com base na cena de detecção.

Categorias para porn:

  • normal: Normal.

  • sexy: Sensual.

  • porn: Pornográfico.

Categorias para terrorism:

  • normal: Normal.

  • bloody: Sangrento.

  • explosion: Explosão ou fumaça.

  • outfit: Vestimenta especial.

  • weapon: Arma.

  • politics: Politicamente sensível.

  • violence: Briga.

  • crowd: Multidão.

  • parade: Desfile.

  • carcrash: Acidente de carro.

  • flag: Bandeira.

  • location: Ponto de referência.

  • others: Outros.

Categorias para ad:

  • normal: Normal.

  • ad: Outros anúncios.

  • npx: Anúncios de spam.

  • qrcode: QR code.

  • programCode: Código de mini-programa.

Categorias para live:

  • normal: Normal.

  • meaningless: Sem conteúdo na imagem (por exemplo, tela preta ou branca).

  • PIP: Picture-in-picture.

  • smoking: Fumando.

  • drivelive: Transmissão ao vivo dentro do carro.

Categorias para logo:

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 Label para determinar se o conteúdo está em conformidade.

Extent

String

Um parâmetro reservado.

Nota

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
  1. Faça login no console do ApsaraVideo Live.

  2. No painel de navegação à esquerda, escolha Feature Management > Callbacks.

  3. Selecione o Streaming Domain que deseja configurar.

  4. 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.

  5. Clique em OK.

Configuração via API

API

Descrição

AddLiveAudioAuditNotifyConfig

Adiciona uma configuração de callback de moderação de áudio.

DeleteLiveAudioAuditNotifyConfig

Exclui uma configuração de callback de moderação de áudio.

UpdateLiveAudioAuditNotifyConfig

Modifica uma configuração de callback de moderação de áudio.

DescribeLiveAudioAuditNotifyConfig

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:

  • normal: Normal

  • spam: Spam

  • ad: Anúncio

  • politics: Conteúdo politicamente sensível

  • terrorism: Terrorismo

  • abuse: Abuso

  • porn: Pornográfico

  • flood: Disparate

  • contraband: Contrabando

  • meaningless: Sem sentido

Suggestion

String

A ação sugerida. Valores válidos:

  • pass: O resultado é normal. Nenhuma ação adicional é necessária.

  • review: O resultado é incerto. Revisão manual é necessária.

  • block: O conteúdo não está em conformidade. Exclua o conteúdo ou restrinja sua visibilidade pública.

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 Label para determinar se o conteúdo está em conformidade.

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:

  • normal: Normal

  • spam: Spam

  • ad: Anúncio

  • politics: Conteúdo politicamente sensível

  • terrorism: Terrorismo

  • abuse: Abuso

  • porn: Pornográfico

  • flood: Disparate

  • contraband: Contrabando

  • meaningless: Sem sentido

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

  1. Faça login no console do ApsaraVideo Live.

  2. No painel de navegação à esquerda, escolha Feature Management > Callbacks.

  3. Selecione o Ingest Domain para configurar.

  4. Na aba Callback Settings, ative a chave Dual-stream Disaster Recovery Callbacks e configure a URL de callback.

  5. Clique em OK.

Parâmetros do callback

Parâmetro

Descrição

action

O tipo de evento. Valor fixo: multistream_set_master_result

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

  1. 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.

  2. Até 1.000 registros de callback dos últimos 7 dias estão disponíveis.

Passos

  1. Faça login no console do ApsaraVideo Live.

  2. No painel de navegação à esquerda, clique em Feature Management > Callbacks.

  3. Selecione o domínio de ingestão ou streaming onde a URL de callback está configurada.

  4. Na aba Callback Records, selecione Stream Ingest Callbacks ou Recording Callbacks.

  5. Você pode filtrar os registros de callback por intervalo de tempo, AppName e StreamName.