A gravação de transmissões ao vivo captura streams ingeridos e os salva em um local de armazenamento especificado para reprodução sob demanda. O ApsaraVideo Live oferece duas opções de armazenamento: armazenar no ApsaraVideo VOD e armazenar no Object Storage Service (OSS).
Visão geral do recurso
Como funciona
Durante a gravação, o sistema processa o stream ao vivo ingerido segmentando-o em arquivos Transport Stream (TS) e empacotando-os no formato de destino, como FLV, MP4 ou M3U8. Os arquivos finais são salvos no espaço de armazenamento especificado.
A gravação de transmissões ao vivo altera apenas o formato do contêiner de áudio e vídeo, sem modificar o conteúdo na camada de codificação. Se o stream de origem apresentar problemas, como artefatos de vídeo ou dessincronização entre áudio e vídeo, o arquivo gravado manterá essas falhas.
Formatos de codificação de áudio e vídeo
Como a gravação de transmissões ao vivo primeiro segmenta o stream em arquivos TS, o formato de codificação deve ser compatível com o contêiner TS. O ApsaraVideo Live suporta apenas os seguintes formatos de codificação:
Codecs de vídeo: H.264 (AVC), H.265 (HEVC), MPEG-4
Codecs de áudio: AAC, MP3
Caso o stream ao vivo contenha áudio ou vídeo codificados em outros formatos, poderão ocorrer problemas como falha na gravação, tela preta no arquivo gravado ou ausência de áudio.
Comparação dos métodos de armazenamento
A gravação de transmissões ao vivo oferece duas opções de armazenamento: ApsaraVideo VOD e OSS. Não é possível configure ambas as opções para o mesmo stream ao vivo. Escolha uma delas com base nos requisitos do seu negócio.
Item | Armazenar no ApsaraVideo VOD | Armazenar no OSS |
product associado | ApsaraVideo VOD | OSS |
Formato de armazenamento |
|
|
Pós-processamento da gravação | Suporta recursos de processamento de mídia, como mesclagem automática e transcodificação para vídeos gravados. | Requer processamento manual. |
Casos de uso | Ideal para tarefas de pós-produção em conteúdo gravado, como cortes, transcodificação e composição. | Recomendado para armazenamento e gerenciamento de longo prazo do conteúdo gravado. |
Métodos de acionamento da gravação
Existem quatro formas de acionar a gravação de transmissões ao vivo: gravação automática, gravação sob demanda, parâmetros de ingestão ou gravação manual.
Gravação automática
O ApsaraVideo Live utiliza modelos de gravação para gerenciar as configurações. O sistema associa um modelo de gravação automática com base nos parâmetros DomainName, AppName e StreamName presentes na URL de ingestão.
Lógica de correspondência
Correspondência exata: Especifique um
AppNamee umStreamNameespecíficos no modelo de gravação. Essa configuração aplica o modelo apenas àquele stream ao vivo específico.Correspondência por curinga: Defina
AppNamecomo*no modelo para aplicá-lo a todos os aplicativos sob o domínio. DefinaStreamNamecomo*para aplicar o modelo a todos os streams ao vivo dentro do aplicativo.Limite de modelo com curinga: Quando tanto
AppNamequantoStreamNameestiverem definidos como*, apenas um modelo de gravação com curinga é permitido por domínio. Se o envio falhar no console, verifique se já existe um modelo com curinga para esse domínio. Para alterar a configuração, edite o modelo existente em vez de crie um novo.
Confirmação por callback
Utilize a gravação sob demanda para decidir dinamicamente se um stream ao vivo deve ser gravado, com base nas regras do seu negócio.
Fluxo de trabalho:
Quando um stream ao vivo inicia, se o modelo de gravação correspondente estiver definido como "On-demand recording", o service de transmissão ao vivo envia uma solicitação HTTP para a URL de callback sob demanda pré-configurada, a fim de determinar se o stream deve ser gravado.
Sua aplicação recebe a solicitação e retorna um comando de gravação (permitir ou negar) com base na lógica de negócios atual.
O service de transmissão ao vivo inicia a tarefa de gravação conforme sua resposta.
Especifique previamente a URL de callback sob demanda para gravação de streams ao vivo nas configurações de callback de eventos. Para obter detalhes sobre configuração, parâmetros de solicitação e formato de resposta, consulte Live stream recording callbacks e On-demand recording callbacks.
Observação:
O service de gravação processa a resposta do callback para substituir as configurações do modelo:
Interval: O valor de intervalo fornecido substitui o ciclo de gravação configurado no modelo.Format: O service calcula a interseção entre o formato solicitado e os formatos pré-configurados no modelo. Se não houver formatos comuns, o stream não será gravado.Callback frequency: Para um único stream ao vivo, o callback de gravação sob demanda envia a solicitação HTTP de confirmação apenas uma vez, no momento em que o stream começa a ser enviado. Essa solicitação não é reenviada mesmo que o formato de armazenamento seja M3U8 ou que o stream seja desconectado e reconectado durante a transmissão.
Acionamento por parâmetro de ingestão
Quando o método de acionamento estiver definido como "Ingest parameter settings", controle a ativação da gravação para o stream atual utilizando o parâmetro record_config na URL de ingestão.
Formato do parâmetro:
record_config={"NeedRecord": <true/false>}Descrição do parâmetro:
true: Ativa a gravação.false: Desativa a gravação.Nota: Codifique o parâmetro para URL durante a construção da URL.
Limitações: Este modo de acionamento suporta apenas o controle da gravação do stream bruto. Streams transcodificados não podem ser gravados através deste método. Para gravar streams transcodificados, selecione outro modo de acionamento, como Automatic, Callback Confirmation ou Manual.
Suponha que a URL de ingestão do stream seja: rtmp://push.example.com/live/stream1
Para ativar a gravação via parâmetros, construa a URL da seguinte forma: rtmp://push.example.com/live/stream1?record_config=%7B%22NeedRecord%22%3Atrue%7D&auth_key=xxx
Gravação manual
Para ter controle total sobre o processo de gravação com base na lógica do seu negócio, utilize a gravação manual.
Neste cenário, chame a API RealTimeRecordCommand para iniciar manualmente a gravação de um stream ao vivo específico.
Essa API também permite interromper uma gravação. Chame essa interface para forçar a parada da tarefa de gravação atual, independentemente de ter sido iniciada automaticamente, sob demanda ou manualmente.
Consulte a documentação da API RealTimeRecordCommand e utilize o parâmetro command para executar a operação start ou stop.
Armazenar gravações no ApsaraVideo VOD
Pré-requisitos
Ative o service ApsaraVideo VOD e configure um storage bucket. O bucket deve estar na mesma região do centro de transmissão ao vivo do domínio que você deseja configure.
Configuração
O ApsaraVideo Live utiliza modelos de gravação para gerenciar as configurações. Crie um modelo de gravação para armazenar os arquivos no ApsaraVideo VOD através do console ou de uma API.
Configure a gravação antes do início da transmissão ao vivo. Caso contrário, o sistema não reterá os dados do stream. Certifique-se de concluir a configuração de gravação antes que o stream entre no ar.
Método 1: console
Faça login no console do ApsaraVideo Live.
No painel de navegação à esquerda, selecione Feature Management > Recording. Na aba Recording Configuration, selecione VOD.
Selecione o domínio de streaming a ser configurado e clique em Add.
-
Configure o modelo de gravação.
Configurações básicas de gravação
Parâmetro
Descrição
Application Name
O nome do aplicativo deve ser idêntico ao AppName na URL de ingestão do stream para que a configuração tenha efeito. Para aplicar a todos os aplicativos sob o domínio, insira
*.Stream Name
Nome do stream. Suporta correspondência exata para gravar um stream específico. Para gravar todos os streams ao vivo sob o AppName atual, insira
*.VOD Application
O workspace onde os arquivos gravados são armazenados, criado no service ApsaraVideo VOD. Este campo não é exibido se os workspaces não estiverem ativados.
Bucket
Selecione um local de armazenamento criado no service ApsaraVideo VOD na região atual. Por padrão, o sistema utiliza o endereço de upload padrão configurado no ApsaraVideo VOD.
Recording Source
É possível gravar o Raw Stream ou os Transcoded Streams. Ambas as opções podem ser selecionadas simultaneamente.
Ao selecionar Transcoded Streams, especifique até 10 modelos de transcodificação ou selecione todos os modelos disponíveis.
A gravação do stream transcodificado só terá efeito se o AppName do modelo de transcodificação for
*ou igual ao AppName do modelo de gravação.Trigger Mode
As gravações podem ser acionadas das seguintes formas: Automatic, Callback Confirmation, Ingest Parameter Trigger e Manual.
Para mais informações, consulte Recording trigger methods.
Format
Suporta os formatos M3U8, FLV e MP4. Ao selecionar múltiplos formatos, configure as definições do VOD separadamente para cada um.
Recording Cycle
Duração máxima de um único arquivo de gravação. Se a duração do stream ao vivo exceder esse limiar, o sistema gera um novo arquivo. Padrão: 180 minutos. Intervalo: 15 a 360 minutos.
Reconnect Timeout
Se uma interrupção do stream ao vivo for menor que esta duração, a gravação continua no mesmo arquivo. Interrupções mais longas resultam na criação de um novo arquivo. Padrão: 180 segundos. Intervalo: 15 a 21.600 segundos.
Segment Length
Duração de um único segmento TS. Exibido apenas quando o formato M3U8 é selecionado.
Padrão: 30 segundos. Intervalo: 5 a 30 segundos.
Configurações do VOD
Ao armazenar gravações no ApsaraVideo VOD, utilize estas configurações para processar os arquivos gravados com os recursos de processamento de mídia do ApsaraVideo VOD. Se múltiplos formatos de gravação forem selecionados, configure-os individualmente.
Parâmetro
Descrição
Auto Merge
Se ativado, múltiplos arquivos de diferentes ciclos de gravação são mesclados automaticamente em um único arquivo e armazenados no ApsaraVideo VOD após o término do stream ao vivo. Os arquivos originais de gravação são mantidos.
Video Processing
Utilize o service ApsaraVideo VOD para processar os vídeos gravados.
Source Video: Cada arquivo de ciclo de gravação é processado individualmente.
Merged Video: Processa o arquivo mesclado (Exibido após ativar a mesclagem automática).
Processing Method
SuportaTranscoding Template Group e Workflow.
Processing Template
Selecione um grupo de modelos de transcodificação ou um modelo de workflow no service ApsaraVideo VOD.
Nota: Selecione apenas modelos criados na mesma região do centro de transmissão ao vivo do domínio.
Category
Defina a categoria para o arquivo gravado no service ApsaraVideo VOD.
Clique em OK para crie o modelo de gravação.
Método 2: API
Chame a API AddLiveRecordVodConfig para adicionar uma configuração de armazenamento de gravações no ApsaraVideo VOD. Código de exemplo:
// Parameter settings for API request
AddLiveRecordVodConfigRequest.RecordFormat recordFormat0 = AddLiveRecordVodConfigRequest.RecordFormat.builder()
.format("m3u8")
.sliceDuration(30)
.autoCompose("ON")
.videoProcess("origin,compose")
.processMethod("transcode")
.processTemplateId("e2d796d3bb5fd8049d32bff62f94****")
.tags("sports")
.build();
AddLiveRecordVodConfigRequest addLiveRecordVodConfigRequest = AddLiveRecordVodConfigRequest.builder()
.regionId("<Your RegionID>")
.domainName("<Your DomainName>")
.appName("live")
.streamName("stream1")
.cycleDuration(3600)
.spaceId("app-1000000")
.storageLocation("<Your StorageLocation>")
.onDemand(0)
.recordContent("raw,transcode")
.delayTime(180)
.recordFormat(java.util.Arrays.asList(recordFormat0))
.transcodeTemplates(java.util.Arrays.asList("sd"))
// Request-level configuration rewrite, can set Http request parameters, etc.
// .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
.build();
Parâmetros principais
-
OnDemandMétodo de acionamento da gravação. Valores válidos: 0 (gravação automática), 1 (gravação sob demanda), 2 (configurações de parâmetro de ingestão), 7 (gravação manual). Para detalhes, consulte Recording trigger methods.
-
DelayTimeDuração de emenda para streams interrompidos, em segundos. Se uma interrupção do stream ao vivo for menor que esta duração, a gravação continua no mesmo arquivo. Interrupções mais longas resultam na criação de um novo arquivo.
-
RecordContent,TranscodeTemplatesEspecifique se deve gravar o stream de origem ou um stream transcodificado. Ao gravar um stream transcodificado, é obrigatório especificar o ID do modelo de transcodificação.
-
RecordFormat: Define o formato de armazenamento e a configuração do VOD. Inclui:AutoCompose: Se ativado, múltiplos arquivos de diferentes ciclos de gravação são mesclados automaticamente em um único arquivo após o término do stream ao vivo.VideoProcess,ProcessMethod,ProcessTemplateId: Utilize um modelo de transcodificação ou workflow do ApsaraVideo VOD para processar o arquivo original gravado ou o vídeo mesclado automaticamente.
Para uma descrição completa dos parâmetros, consulte AddLiveRecordVodConfig - Add a configuration to store live recordings in VOD.
Gerenciar gravações
Visualize as gravações armazenadas no ApsaraVideo VOD pelo console do ApsaraVideo Live e gerencie-as utilizando o service ApsaraVideo VOD.
Faça login no console do ApsaraVideo Live.
No painel de navegação à esquerda, selecione Feature Management > Recording. Clique na aba Recording Management.
Selecione o domínio de streaming configurado.
-
Clique na aba VOD.
Filtre os registros de gravação por intervalo de datas,
AppNameeStreamName. Para visualize e gerenciar arquivos de gravação específicos, clique em Manage in the VOD Console na coluna Actions, ou faça login no console do ApsaraVideo VOD e selecione Media Library > Audio/Video.
Armazenar gravações no OSS
Pré-requisitos
Ative o service OSS e crie um storage bucket. O bucket do OSS deve estar na mesma região do centro de transmissão ao vivo do domínio que você deseja configure.
Configure as permissões para que o ApsaraVideo Live possa gravar no OSS. Geralmente, essa autorização ocorre automaticamente ao ativar o service. Caso tenha excluído a permissão acidentalmente, clique em Authorize Access to Cloud Resources para concedê-la novamente.
Recomendamos utilizar uma conta Alibaba Cloud para concluir a autorização. Se utilizar um usuário RAM, ele deverá possuir as seguintes permissões: ram:CreateRole, ram:GetRole, ram:ListPoliciesForRole e ram:AttachPolicyToRole. Conceder essas permissões a um usuário RAM apresenta riscos de segurança e não é recomendado.
Configuração
O ApsaraVideo Live utiliza modelos de gravação para gerenciar as configurações. Crie um modelo de gravação para armazenar os arquivos no OSS através do console ou de uma API.
Após configure o modelo, reinicie o stream de ingestão para que as alterações tenham efeito. Para garantir que um stream seja gravado desde o início, crie o modelo antes que o stream comece.
Método 1: console
Faça login no console do ApsaraVideo Live.
No painel de navegação à esquerda, selecione Feature Management > Recording. Na aba Recording Configuration, selecione OSS.
Selecione o domínio de streaming a ser configurado e clique em Add.
-
Configure o modelo de gravação. Escolha gravar o stream de origem, um stream transcodificado ou ambos.
Configurações básicas de gravação
Parâmetro
Descrição
Application Name
Nome do aplicativo. Deve corresponder ao AppName na URL de push para que a configuração tenha efeito. Para aplicar a todos os aplicativos sob o domínio, insira
*.Stream Name
Nome do stream. Especifique um nome exato para gravar um stream específico. Para gravar todos os streams ao vivo sob o AppName atual, insira
*.Storage Location
Selecione um bucket criado no OSS na região atual.
NotaExistem dois tipos de buckets de armazenamento:
Bucket padrão: Utilizado para armazenamento geral de arquivos.
Bucket de mídia: Dedicado à transcodificação de vídeo. Arquivos armazenados neste tipo de bucket podem acionar automaticamente tarefas de transcodificação do ApsaraVideo Media Processing (MPS).
Atualmente, o sistema não rotula os tipos de bucket. Se precisar realizar transcodificação de vídeo, anote o nome do bucket de mídia para garantir que os arquivos transcodificados sejam armazenados corretamente.
Interruption Duration Threshold
Se uma interrupção do stream ao vivo for menor que esta duração, a gravação continua no mesmo arquivo. Interrupções mais longas resultam na criação de um novo arquivo. Padrão: 180 segundos. Intervalo: 15 a 21.600 segundos.
Trigger Mode
Acione as gravações das seguintes formas: Automatic, Callback Confirmation, Ingest Parameter Trigger e Manual.
Para mais informações, consulte Recording trigger methods.
Gravar stream de origem
Parâmetro
Descrição
Storage Format
Suporta os formatos M3U8, FLV, MP4 e CMAF. Selecione múltiplos formatos, exceto M3U8 e CMAF simultaneamente.
Naming Conventions
Convenção de nomenclatura para arquivos gravados. Caminhos padrão:
M3U8, FLV, MP4:
record/{AppName}/{StreamName}/{EscapedStartTime}_{EscapedEndTime}TS, fMP4:
record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}Segment Length
Duração de um único segmento TS. Exibido apenas quando o formato M3U8 ou CMAF é selecionado.
Padrão: 30 segundos. Intervalo: 5 a 30 segundos.
Recording Cycle
Duração máxima de um único arquivo de gravação. Se a duração do stream ao vivo exceder esse limiar, o sistema gera um novo arquivo. Padrão: 180 minutos. Intervalo: 15 a 360 minutos.
Gravar stream transcodificado
Parâmetro
Descrição
Transcoded Streams
Selecione os streams transcodificados a serem gravados. Especifique até 10 modelos de transcodificação ou selecione todos.
Para que a gravação do stream transcodificado funcione, o AppName do modelo de transcodificação deve ser
*ou corresponder ao do modelo de gravação.Storage Format
Suporta os formatos M3U8, FLV, MP4 e CMAF. Selecione múltiplos formatos, exceto M3U8 e CMAF simultaneamente.
Naming Conventions
Convenção de nomenclatura para arquivos gravados. Caminhos padrão:
M3U8, FLV, MP4:
transcodeRecord/{AppName}/{StreamName}_{TranscodingTemplateID}/{EscapedStartTime}_{EscapedEndTime}TS, fMP4:
transcodeRecord/{AppName}/{StreamName}_{TranscodeTemplateID}/{UnixTimestamp}_{Sequence}Segment Length
Duração de um único segmento TS. Exibido apenas quando o formato M3U8 ou CMAF é selecionado.
Padrão: 30 segundos. Intervalo: 5 a 30 segundos.
Recording Cycle
Duração máxima de um único arquivo de gravação. Se a duração do stream ao vivo exceder esse limiar, o sistema gera um novo arquivo. Padrão: 180 minutos. Intervalo: 15 a 360 minutos.
Clique em OK para crie o modelo de gravação.
Método 2: API
Chame a API AddLiveAppRecordConfig para adicionar uma configuração de armazenamento de gravações no OSS. Código de exemplo:
// Parameter settings for API request
AddLiveAppRecordConfigRequest.TranscodeRecordFormat transcodeRecordFormat0 = AddLiveAppRecordConfigRequest.TranscodeRecordFormat.builder()
.sliceDuration(30)
.sliceOssObjectPrefix("transcodeRecord/{AppName}/{StreamName}_{TranscodeTemplateID}/{UnixTimestamp}_{Sequence}")
.ossObjectPrefix("transcodeRecord/{AppName}/{StreamName}_{TranscodeTemplateID}/{EscapedStartTime}_{EscapedEndTime}")
.cycleDuration(900)
.format("m3u8")
.build();
AddLiveAppRecordConfigRequest.RecordFormat recordFormat0 = AddLiveAppRecordConfigRequest.RecordFormat.builder()
.sliceDuration(30)
.format("m3u8")
.cycleDuration(900)
.sliceOssObjectPrefix("record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}")
.ossObjectPrefix("record/{AppName}/{StreamName}/{Sequence}_{EscapedStartTime}_{EscapedEndTime}")
.build();
AddLiveAppRecordConfigRequest addLiveAppRecordConfigRequest = AddLiveAppRecordConfigRequest.builder()
.domainName("<Your DomainName>")
.appName("live")
.ossEndpoint("<Your OssEndpoint>")
.ossBucket("<Your OssBucket>")
.streamName("stream1")
.onDemand(0)
.delayTime(180)
.recordFormat(java.util.Arrays.asList(recordFormat0))
.transcodeRecordFormat(java.util.Arrays.asList(transcodeRecordFormat0))
.transcodeTemplates(java.util.Arrays.asList("sd"))
// Request-level configuration rewrite, can set Http request parameters, etc.
// .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
.build();
Parâmetros principais
-
OnDemandMétodo de acionamento da gravação. Valores válidos: 0 (gravação automática), 1 (gravação sob demanda), 2 (configurações de parâmetro de ingestão), 7 (gravação manual). Para detalhes, consulte Recording trigger methods.
-
DelayTimeDuração de emenda para streams interrompidos, em segundos. Se uma interrupção do stream ao vivo for menor que esta duração, a gravação continua no mesmo arquivo. Interrupções mais longas resultam na criação de um novo arquivo.
-
RecordFormatFormato de armazenamento e parâmetros de gravação para o stream de origem, incluindo
Format(formato de armazenamento),OssObjectPrefix(convenção de nomenclatura),SliceDuration(duração do segmento) eCycleDuration(ciclo de gravação). -
TranscodeTemplates,TranscodeRecordFormatAo gravar um stream transcodificado, especifique a lista de IDs dos modelos de transcodificação, além do formato de armazenamento e parâmetros de gravação para o stream transcodificado.
Para uma descrição completa dos parâmetros, consulte AddLiveAppRecordConfig - Add a recording configuration.
Gerenciar gravações
Visualizar gravações
Visualize as gravações armazenadas no OSS de três maneiras:
Método 1: console
Faça login no console do ApsaraVideo Live.
No painel de navegação à esquerda, selecione Feature Management > Recording. Clique na aba Recording Management.
Selecione o domínio de streaming configurado.
-
Clique na aba OSS.
Filtre os registros de gravação por intervalo de datas,
AppNameeStreamName.
Método 2: API
O ApsaraVideo Live fornece uma API para consultar todos os arquivos de índice de gravação dentro de um período específico. O sistema armazena informações de arquivos de índice por apenas seis meses, limitando as consultas a dados desse período. Para detalhes sobre chamadas de API e configuração de parâmetros, consulte DescribeLiveStreamRecordIndexFiles - Query all recording index files within a time period.
Método 3: OSS
Ao configure o recurso de gravação, você especificou o local de armazenamento para os arquivos de gravação no OSS. Para visualize os arquivos no OSS, consulte List objects.
Mesclar e extrair conteúdo
Ao armazenar gravações no OSS, crie um novo arquivo de índice para extrair um clipe de um período específico ou mesclar vários arquivos de gravação em um só.
O conteúdo gravado deve incluir o formato de armazenamento M3U8 para ser mesclado ou extraído.
Método 1: console
Faça login no console do ApsaraVideo Live.
No painel de navegação à esquerda, selecione Feature Management > Recording. Selecione a aba Recording Management.
Selecione o domínio de streaming configurado.
Selecione a aba OSS.
Clique em Edit Index File. Filtre os arquivos de gravação por domínio de streaming, AppName, StreamName e intervalo de tempo.
Visualize os períodos que contêm conteúdo gravado na linha do tempo. Defina os horários de início e fim e clique em Save As para salve o novo arquivo M3U8 gerado.
Método 2: API
O ApsaraVideo Live fornece uma API para crie um novo arquivo de índice. As informações de segmentos TS são armazenadas no sistema do ApsaraVideo Live por apenas três meses, portanto, selecione apenas conteúdos gravados nos últimos três meses.
Para detalhes sobre chamadas de API e configuração de parâmetros, consulte CreateLiveStreamRecordIndexFiles - Create recording index files.
Excluir gravações
O ApsaraVideo Live armazena informações de gravação, como AppName, StreamName e o caminho de armazenamento de arquivos no OSS. Os arquivos de gravação reais ficam armazenados no OSS.
Para exclua arquivos no OSS simultaneamente à exclusão das informações de gravação no ApsaraVideo Live, crie a função de service AliyunMTSVideoLifecycleRole e conceda a ela a política de sistema AliyunMTSVideoLifecycleRolePolicy. Clique para autorizar para realizar a autorização com um clique.
Exclua os arquivos de gravação utilizando os seguintes métodos:
Console do Live: Na aba Recording Management, selecione o arquivo e exclua-o. Marque Also delete the recording file stored in OSS para remover também o arquivo do OSS.
API: Chame a interface DeleteLiveStreamRecordIndexFiles - Delete live stream recording files.
Exclusão direta no OSS: Em geral, não recomendamos exclua arquivos de gravação diretamente do OSS. Se o seu negócio exigir isso, consulte a documentação do OSS sobre deleting objects.
Exclusão automática ao expirar: Para ativar este recurso, envie um ticket para configure o tempo de expiração.
Configure um domínio CDN
Para acelerar a distribuição dos seus vídeos gravados, configure um domínio CDN. O CDN distribui os vídeos para vários nós, permitindo que os usuários acessem o conteúdo a partir do nó mais próximo em vez da origem no OSS. Isso melhora a velocidade de acesso e reduz custos de rede. Para operações específicas, consulte Accelerate access to OSS by using Alibaba Cloud CDN.
Política de prioridade de modelos
Se você configure múltiplos modelos de gravação e um stream ao vivo corresponder a mais de um, o sistema aplicará aquele com a maior prioridade. Um número menor indica maior prioridade.
|
Prioridade |
DomainName |
AppName |
StreamName |
|
1 |
Especificado |
Especificado |
Especificado |
|
2 |
Especificado |
Especificado |
* |
|
3 |
Especificado |
* |
* |
("Especificado" indica que o parâmetro correspondente possui um valor e que esse valor não é *)
Faturamento
O uso do recurso de gravação de transmissões ao vivo pode gerar as seguintes taxas:
-
Taxa mensal do service de gravação
Após ativar a gravação de transmissões ao vivo, o faturamento é baseado no pico de canais de gravação simultâneos por mês. Para detalhes, consulte Live stream recording fees.
-
Taxa de conversão de formato de contêiner de gravação
Ao selecionar formatos não padrão como FLV, MP4 ou CMAF, a cobrança é baseada na duração. Esta taxa é cobrada pelo service ApsaraVideo Live. Para detalhes, consulte Live stream recording fees.
-
Taxa de processamento de vídeo gravado
Ao armazenar no ApsaraVideo VOD, o processamento de vídeos gravados via mesclagem automática ou transcodificação gera taxas de processamento de vídeo, cobradas pelo service ApsaraVideo VOD. Para detalhes, consulte Editing and production billing e Media transcoding billing.
-
Taxas de armazenamento
O armazenamento de arquivos gravados no ApsaraVideo VOD gera taxas de armazenamento, cobradas pelo service ApsaraVideo VOD. Para detalhes, consulte Media storage billing.
O armazenamento de arquivos gravados no OSS gera taxas de armazenamento, cobradas pelo service OSS. Para detalhes, consulte Storage fees.
-
Interrupção do faturamento
A gravação de transmissões ao vivo é faturada com base na sua configuração. Para parar de incorrer em taxas de gravação, faça login no console do ApsaraVideo Live, acesse Feature Management > Recording e exclua o modelo de gravação ou desative a gravação para o domínio. Se você apenas parar de enviar o stream, mas não exclua o modelo de gravação, ainda poderá haver uma pequena taxa de service.
FAQ
Geração e disponibilidade de gravações
Mecanismo de geração
O arquivo de gravação não é gerado imediatamente após a desconexão de um stream. O sistema aguarda a duração de emenda para streams interrompidos (o padrão é 180 segundos). Se o stream for retomado dentro desse período, a gravação é anexada ao arquivo existente. Caso contrário, o sistema considera que o stream terminou e gera o arquivo de gravação.
Ajuste essa duração conforme necessário, mas recomendamos manter a configuração padrão. Uma duração menor pode resultar em numerosos arquivos pequenos devido a flutuações de rede, enquanto uma duração maior implica uma espera mais longa pelo arquivo após o término do stream.
Geração imediata
Para gerar o arquivo de gravação imediatamente após o término de um stream, sem o atraso de emenda, configure um callback de evento para o stream de ingestão (consulte Event callbacks). Ao receber a notificação de desconexão do stream, chame a API RealTimeRecordCommand para cancele o atraso de emenda.
realTimeRecordCommandRequest.setCommand("cancel_delay");
Visualizando gravações em andamento
Se a duração de um stream não tiver excedido o ciclo de gravação, o arquivo geralmente é gerado após o término do stream. Para acesse o arquivo de gravação atual antes do fim do stream, chame a API RealTimeRecordCommand para atualizar a gravação. Esse comando encerra forçadamente o processo de gravação atual, gera o arquivo imediatamente e inicia automaticamente uma nova gravação.
realTimeRecordCommandRequest.setCommand("restart");
Se a gravação do seu stream estiver configurada com múltiplos formatos de armazenamento, esta operação atualizará todos eles.
Impacto de anomalias do stream na gravação
O sistema lida com anomalias do stream de maneiras diferentes, dependendo da gravidade:
Stream padrão (atende aos requisitos de codificação com taxa de quadros e timestamp estáveis): As gravações são geradas com sucesso em 100% dos casos.
Stream com problemas menores (flutuações ocasionais na taxa de quadros ou saltos de timestamp): O sistema lida automaticamente com esses problemas para garantir compatibilidade.
Stream com problemas graves (ausência prolongada de quadros de vídeo, timestamps desordenados ou falta de keyframes): Não é possível garantir o sucesso da gravação.
Solução de problemas de arquivos de gravação
Se os arquivos de gravação não forem gerados ou contiverem conteúdo inesperado, verifique os seguintes pontos:
Configuração de gravação não entra em vigor — Os modelos de gravação aplicam-se apenas a novos streams enviados após a conclusão da configuração. Se um stream já estava sendo transmitido quando o modelo foi criado, desconecte e reenvie o stream para que o modelo tenha efeito.
Stream transcodificado não é gravado — Verifique se o método de acionamento da transcodificação está definido como "push-triggered". Se estiver definido como "pull-triggered", o stream transcodificado será gerado apenas quando um visualizador solicitar ativamente o stream. Sem uma solicitação ativa, o stream transcodificado não existe e, portanto, não pode ser gravado.
Segmentos duplicados na reprodução — Isso geralmente ocorre quando um stream se desconecta e reconecta dentro da duração de emenda. Os segmentos sobrepostos são incluídos na gravação. É necessária edição de pós-produção para remover as partes duplicadas.
Tela preta com áudio em alta resolução — Verifique o seguinte no lado do push: se a fonte de compartilhamento de tela está sendo capturada corretamente, se as configurações do codificador correspondem à resolução alvo e se o player suporta o formato de codificação. Esse problema geralmente é causado pela configuração do lado do push, e não pelo service de gravação.
Sem registros de callback do OSS — Verifique se o destino de armazenamento está definido como OSS. O ApsaraVideo VOD utiliza eventos de callback diferentes do OSS. Se a gravação estiver armazenada no ApsaraVideo VOD, verifique os eventos de callback do ApsaraVideo VOD.
Nome do arquivo de gravação não corresponde ao esperado — Ao armazenar gravações no ApsaraVideo VOD, o nome do arquivo de gravação assume como padrão o
StreamNamee não suporta personalização. Se precisar de nomes de arquivos personalizados, utilize o armazenamento OSS e configure a convenção de nomenclatura no modelo de gravação.
Como obtenho o VideoId de um arquivo de gravação armazenado no ApsaraVideo VOD e quais são as limitações de autenticação de callback?
Obtendo o VideoId: O callback de gravação de transmissão ao vivo não inclui o VideoId. Para obter o VideoId, configure uma notificação de callback de evento no lado do ApsaraVideo VOD. O callback do VOD inclui informações completas do ativo de mídia, incluindo o VideoId. Se você já configurou um callback de evento do VOD, não é necessário configure também um callback de gravação de transmissão ao vivo.
Limitação de autenticação de callback: A autenticação de callback de conclusão de gravação (que depende dos parâmetros
ALI-LIVE-TIMESTAMPeALI-LIVE-SIGNATURE) atualmente não é suportada quando a gravação é armazenada no ApsaraVideo VOD. Se o console mostrar a opção de autenticação como indisponível ou falhar ao salve, trata-se de uma limitação conhecida ou um problema de exibição, e o callback do lado do VOD deve ser considerado a fonte autoritativa.