Este tópico aborda perguntas frequentes e apresenta soluções para os ApsaraVideo Player SDKs em diferentes plataformas.
RTMP versus HTTP-FLV para streaming ao vivo padrão
Recomendamos o uso de HTTP-FLV pelos seguintes motivos:
Ao gerar uma URL no console do ApsaraVideo Live, tanto a URL RTMP quanto a URL HTTP-FLV são criadas. Os dados são idênticos para ambos os protocolos; a única diferença é o protocolo de rede utilizado.
HTTP é o protocolo principal da internet. Links de rede — como CDNs, operadoras e dispositivos intermediários — foram otimizados para HTTP há muito tempo. As portas padrão HTTP 80 e 443 são portas comumente incluídas em listas de permissões e raramente são bloqueadas. O protocolo RTMP é mais antigo, e sua porta padrão 1935 costuma ser bloqueada por dispositivos como firewalls, o que pode causar falhas de reprodução.
Observações sobre o uso de APIs comuns do Player SDK
Obtenção da posição de reprodução no iOS: utilize o parâmetro
positiondo callbackonCurrentPositionUpdate. Após uma operação de seek, aguarde o eventoAVPEventSeekEndantes de obter a posição.Valor de retorno de getPlayTime(): este método retorna a duração de reprodução em segundos, excluindo pausas e seeks. A duração é calculada em tempo real, inclusive durante o avanço rápido.
Falha ao alternar a qualidade do vídeo: se
selectTrackfalhar, use temporariamentesetQuality+setStartTime+preparecomo substituto.Troca de vídeos com replayByVidAndPlayAuth: passe explicitamente
swScriptURL(um endereço HTTPS absoluto) para suportar criptografia privada em versões mais antigas do iOS.Definição do tempo de início: esta configuração não impede que os usuários façam seek manualmente na barra de progresso.
Limpeza do buffer: o SDK não disponibiliza atualmente uma API para limpar o buffer dinamicamente durante a execução.
Falhas de reprodução
Falhas de reprodução de VOD
A reprodução pode falhar devido a problemas com codificação de stream, endpoints de rede, CDNs, formatos ou buckets de armazenamento. Para identificar a causa, verifique as mensagens de erro do player e as requisições de rede. Problemas comuns e suas soluções:
Pagamento em atraso: verifique o saldo da sua conta. Se a conta estiver com pagamento pendente, os vídeos não poderão ser reproduzidos.
Problema no cliente de rede: o vídeo falha ao reproduzir e retorna o código de erro
4400. O código de erro4400indica que um recurso não pôde ser carregado devido a problemas no servidor ou na rede. Verifique se um certificado SSL está configurado e se o certificado HTTPS expirou ou é inválido.-
Problema de formato: o formato do vídeo não é compatível com o player. Para obter mais informações sobre os formatos de reprodução suportados pelo ApsaraVideo VOD, consulte Player SDK features.
NotaPara reproduzir arquivos M3U8 com autenticação, é necessário usar um nome de domínio personalizado. Para adicionar um nome de domínio, consulte Add an accelerated domain name.
Problema no bucket: o bucket de armazenamento configurado é inválido, ou a URL assinada de um bucket privado expirou. Isso causa falha na reprodução. Para resolver o problema, desative a assinatura de URL do bucket e defina sua permissão como public-read.
Problema de cross-domain: verifique se a região do seu nome de domínio acelerado é a mesma que a região de reprodução do vídeo. Se forem diferentes, a reprodução falhará. Crie um novo nome de domínio acelerado ou altere a região do existente.
Erro do GetPlayInfo: status do vídeo inválido ou em revisão
Para obter informações de reprodução com sucesso, o status principal do vídeo (Status) deve ser Normal e seu status de revisão (AuditStatus) deve ser Normal. Se o status do vídeo for UploadSucc (upload concluído, mas transcodificação ainda em andamento) ou se AuditStatus for Init (em revisão), aguarde a conclusão da transcodificação e a aprovação da revisão antes de obter as informações de reprodução. Recomendamos usar a API GetVideoInfo para consultar o status mais recente do vídeo e verificar se as configurações globais de revisão estão afetando o progresso do processo.
No modo de revisão antes da publicação, uma revisão manual aprovada indica apenas que a revisão de conteúdo foi concluída, não que o vídeo está pronto para reprodução. O vídeo só retornará informações de reprodução após a transcodificação ser concluída e o status principal (Status) mudar para Normal. Se a revisão manual tiver sido aprovada, mas o vídeo permanecer no status UploadSucc por muito tempo, a transcodificação não foi iniciada ou ainda não foi concluída. Verifique se um grupo de modelos de transcodificação padrão está configurado e definido como padrão, ou inicie a transcodificação manualmente no console do ApsaraVideo VOD.
Erros ao reproduzir vídeos M3U8 locais
Um arquivo M3U8 contém múltiplos segmentos Transport Stream (TS). Para reprodução local, esses segmentos devem existir localmente com caminhos relativos corretos no arquivo M3U8, pois URLs remotas não são suportadas.
O arquivo de índice M3U8 e os arquivos de segmento .ts correspondentes (como 000000.ts, 000001.ts, etc.) devem estar no mesmo diretório.
Arquivos M3U8 locais devem seguir esta estrutura de diretórios.
Falhas de reprodução externa
Solucione o problema seguindo estas etapas:
Verifique se o vídeo ainda existe no ApsaraVideo VOD.
-
Verifique se um nome de domínio acelerado foi adicionado.
Nenhum nome de domínio acelerado adicionado: verifique as permissões do bucket de armazenamento e se ele é privado. Caso seja, é necessária autenticação. Para reproduzir o vídeo diretamente, desative a autenticação e defina a permissão do bucket como public-read. Observe que definir um bucket como public-read representa um risco de segurança.
Nome de domínio acelerado adicionado: verifique se a autenticação está ativada. Caso esteja, estenda o período de validade da autenticação ou desative-a. Observe que desativar a autenticação representa um risco de segurança.
Exceções de reprodução
Vídeo reproduzido sem áudio
O ApsaraVideo Player é otimizado para produtos Alibaba Cloud. Se você usar outras URLs de source, o vídeo pode ser reproduzido sem áudio. Ao se deparar com esse problema, verifique primeiro a source de reprodução utilizada pelo seu player.
Problemas de estilo e componentes do player web
Ícones ausentes: se ícones estiverem faltando em uma implantação local, baixe o diretório completo
/skins/default/ou modifique o caminho relativo dos ícones no CSS para um endereço CDN.Erro de troca de resolução no QualityComponent: se o erro
t.getQuality is not a functionfor reportado, adicione a função de callbackargsà configuração e atualizealiplayercomponentspara a versão 1.1.2 ou posterior.Imagem de capa sobrepõe a barra de progresso: no modo vid + playAuth, contorne o problema ocultando
.prism-covervia CSS ou ativandoautoplayemuted.Compatibilidade com o navegador integrado do WeChat: para problemas de compatibilidade com HLS no navegador integrado do WeChat, defina
useHlsNative: falsepara forçar o uso da solução fMP4.
Inicialização lenta de vídeos
-
Se um vídeo MP4 iniciar lentamente, o átomo moov (índice de dados de áudio e vídeo) pode estar localizado após o átomo mdat (dados de áudio e vídeo) no vídeo de source. Transcodifique o vídeo para mover o átomo moov antes do átomo mdat, o que acelera a análise na reprodução.
Para obter mais informações sobre transcodificação de vídeo, consulte Recommended transcoding templates.
-
Para verificar a posição do átomo moov, execute o seguinte comando:
# The source video URL can be a local file path or an online URL, for example, http://pla****.alicdn.com/video/aliyunmedia.mp4 ffmpeg -v trace -i "source_video_url" 2>&1 | grep -e type:\'mdat\' -e type:\'moov\'Em um cenário normal, o átomo
moovestá antes do átomomdat, o que indica uma otimização de faststart. A saída de exemplo é exibida abaixo.Em um cenário anormal, o átomo
moovestá após o átomomdat.
Para o ApsaraVideo Player SDK para Android e o ApsaraVideo Player SDK para iOS, o ApsaraVideo VOD oferece uma solução de inicialização em milissegundos que melhora significativamente a velocidade de inicialização dos vídeos. Para obter mais informações, consulte Use ApsaraVideo Player to achieve fast-loading full-screen playback.
Reprodução de vídeos criptografados
Vídeo criptografado com DRM não reproduz no navegador
A reprodução de vídeos criptografados com DRM usando o ApsaraVideo Player for Web está sujeita a restrições do navegador. Para obter mais informações sobre os navegadores suportados, consulte Feature compatibility.
MtsHlsUriToken para criptografia HLS
O parâmetro MtsHlsUriToken é um parâmetro personalizado. Na criptografia HLS padrão, após a string de criptografia ser gravada no stream HLS, o endereço de um servidor de descriptografia é adicionado ao manifesto M3U8. Para permitir que apenas usuários específicos acessem o vídeo, o servidor de descriptografia requer um mecanismo de autenticação de identidade. O parâmetro MtsHlsUriToken adiciona uma camada de autenticação ao seu servidor de descriptografia. Um parâmetro especial é então gerado com base nessa lógica de autenticação e passado para verificação de descriptografia.
Ao configurar a criptografia, você deve criar um serviço de emissão de tokens para gerar o MtsHlsUriToken. Para obter mais informações, consulte HLS encryption - Step 4.
Reprodução entre domínios
Carregamento lento de vídeos de UK (London) no território continental da China
O acesso do território continental da China à região UK (London) é mais lento devido à distância. Para melhorar o desempenho, adicione um nome de domínio acelerado e use o Global Accelerator.
Acesso lento e travamentos na reprodução fora da China
Travamentos durante a reprodução geralmente são causados por uma rede instável. Se o travamento for prolongado o suficiente para gerar um erro no player, provavelmente está relacionado à instabilidade do CDN. Caso os travamentos ocorram com frequência, verifique as requisições de rede — a velocidade da rede pode não ser compatível com o bitrate do vídeo. Pode ser necessário aumentar a velocidade da rede ou reduzir o bitrate.
Reprodução de vídeos no OSS
Excesso de requisições durante a reprodução de vídeos do OSS
Verifique se há algum problema com o vídeo de source — por exemplo, se o player envia muitas requisições duplicadas ao decodificar o vídeo. Use um modelo de transcodificação do ApsaraVideo VOD para transcodificar o vídeo antes da reprodução. Para obter mais informações, consulte Video and audio transcoding.
Visualizar recursos de imagem em vez de baixá-los
Para visualizar imagens armazenadas no ApsaraVideo VOD em vez de baixá-las, é necessário usar um nome de domínio personalizado. Adicione um nome de domínio personalizado ao ApsaraVideo VOD. Para obter mais informações, consulte Add an accelerated domain name.
Certificados SSL
Falha na reprodução de vídeos em alguns computadores com o código de erro 4400
O código de erro 4400 indica que o recurso não pôde ser carregado devido a problemas no servidor ou na rede, ou a um formato não suportado. Verifique se um certificado SSL está configurado.
URLs de reprodução
URLs de reprodução curtas
Se a permissão do bucket de armazenamento de um vídeo for privada, a URL de reprodução conterá uma string de autenticação e será uma URL longa. Se a permissão for public-read ou public-read-write, a URL de reprodução não conterá a string de autenticação e será uma URL curta. Para obter mais informações sobre permissões de bucket de armazenamento e como modificá-las, consulte Manage Storage Buckets.
Definir a permissão do bucket de armazenamento como public-read ou public-read-write representa um risco de hotlinking e downloads não autorizados. Essa configuração não é recomendada.
Falha na reprodução de vídeos HLS não transcodificados
Ao usar o ApsaraVideo Player com um ID de vídeo (VID) e uma credencial de reprodução, só é possível reproduzir vídeos transcodificados. Vídeos não transcodificados só podem ser reproduzidos por URL. Chame a operação GetMezzanineInfo para obter a URL do vídeo de source ou acesse o console do ApsaraVideo VOD para visualizar a URL do vídeo.
Permanência das URLs de reprodução de VOD
Quando a permissão do bucket de armazenamento de um vídeo é privada, a URL de reprodução tem validade limitada. A string de autenticação auth_key na URL de reprodução varia conforme o tempo de expiração configurado.
Para obter um endereço de reprodução permanente, altere a permissão do bucket de armazenamento do vídeo para public-read ou public-read-write. A parte do endereço de reprodução gerado antes do caractere ? é um endereço permanente que pode ser usado para reprodução indefinidamente. Para obter mais informações sobre permissões de bucket de armazenamento e como modificá-las, consulte Manage Storage Buckets.
Definir a permissão do bucket de armazenamento como public-read ou public-read-write representa um risco de hotlinking e downloads não autorizados. Essa configuração não é recomendada.
URL de reprodução redireciona para o navegador
A reprodução depende das capacidades de decodificação do navegador e do dispositivo, o que frequentemente resulta em um redirecionamento para o navegador.
Vídeo atualizado não aparece
Após atualizar um vídeo, atualize a URL para recuperar os dados mais recentes. Para atualizar a URL no console do ApsaraVideo VOD, consulte Refresh and prefetch. Para atualizar a URL usando uma API ou SDK, consulte PreloadVodObjectCaches ou RefreshMediaPlayUrls.
Obtenção de pixels de frames do player
ApsaraVideo Player para Android: obtenha os pixels monitorando o callback
OnRenderFrameCallback.-
ApsaraVideo Player para iOS: obtenha os pixels monitorando o callback
onRenderingFrame.player.renderingDelegate = self; #pragma mark CicadaRenderingDelegate - (BOOL)onRenderingFrame:(CicadaFrameInfo*) frameInfo{ if(frameInfo.frameType==Cicada_FrameType_Video){ // Video NSLog(@"receive HW frame:%p pts:%ld foramt %d", frameInfo.video_pixelBuffer, frameInfo.pts, CVPixelBufferGetPixelFormatType(frameInfo.video_pixelBuffer)); } else if (frameInfo.frameType==Cicada_FrameType_Audio){ // Audio } return NO; } ApsaraVideo Player para Web: este recurso não é suportado.
Impossível obter a URL de reprodução de vídeos AVI
A operação GetPlayInfo não suporta a obtenção de streams de vídeo no formato AVI. Portanto, SDKs que dependem dessa operação não conseguem obter streams de vídeo nesse formato.
Para visualizar a URL de reprodução de um vídeo AVI, acesse o console do ApsaraVideo VOD. Para obter mais informações, consulte Query audio or video files.
Erro do GetPlayInfo: "The video has no stream to play for the request parameter"
Solucione o problema seguindo estas etapas:
-
Confirme que a classe de armazenamento do ativo de mídia é Standard.
Por padrão, a operação GetPlayInfo retorna streams de reprodução apenas para ativos de mídia na classe de armazenamento Standard. Para obter streams de reprodução de ativos em outras classes de armazenamento, defina o parâmetro
StorageClassno parâmetroPlayConfigcomo All.Outros valores válidos para
StorageClassincluemStandard,IA(Infrequent Access),Archive,ColdArchive,SourceIA(Source Infrequent Access),SourceArchive(Source Archive),SourceColdArchive(Source Cold Archive),Changing(status do ativo de mídia em alteração) eSourceChanging(status do arquivo de source em alteração). Um valor vazio indica que nenhum filtro é aplicado. -
Confirme que o ativo de mídia possui um stream transcodificado.
Para obter um stream transcodificado, primeiro execute video and audio transcoding e depois chame a operação GetPlayInfo. Para obter a URL do stream de source, consulte GetMezzanineInfo.
Travamentos
Redução de travamentos e melhoria da taxa de acerto de cache
Melhore a taxa de acerto de cache configurando a assinatura de URL, atualizando e pré-carregando conteúdo, ajustando as configurações de cache e filtrando parâmetros.
Travamentos ao fazer seek
Se um vídeo tiver poucos keyframes, o seek é lento porque o player precisa decodificar um segmento maior do vídeo para encontrar um frame. Isso causa travamentos. Nesse caso, transcodifique o vídeo para adicionar mais keyframes e reduzir os travamentos. Para obter mais informações sobre transcodificação, consulte Video and audio transcoding.
Plugin decodificador H.266
Erro 0x200600001 MEDIA_PLAYER_ERROR_CODEC_VIDEO_NOT_SUPPORT
Se a mensagem for vvc plugin not enabled, significa que o plugin não está ativado no seu aplicativo. Chame o método AliPlayerGlobalSettings.enableCodecPlugin para ativá-lo.
Se a mensagem for vvc plugin not loaded, indica que o plugin não foi integrado com sucesso. Verifique se a biblioteca do plugin foi importada corretamente para o projeto, ou chame explicitamente loadlibrary para garantir que o plugin seja carregado com sucesso.
Erro 0x50020002 MEDIA_PLAYER_ERROR_CODEC_PREMIUM_INVALID
Esse erro indica que uma licença Professional Edition não foi obtida. O plugin decodificador H.266 é um recurso da Professional Edition. Para obter mais informações sobre como adquirir uma licença Professional Edition, consulte Manage licenses.
Problemas com miniaturas de vídeo
Impossível obter uma miniatura de vídeo
O console do ApsaraVideo VOD usa o protocolo HTTPS por padrão. Apenas recursos que suportam HTTPS podem ser visualizados diretamente e exibidos como capturas de tela. Você também pode abrir as ferramentas de desenvolvedor do navegador para ver mensagens de erro específicas.
Revisão de vídeos
Vídeo não reproduzível durante a revisão manual
O ApsaraVideo VOD possui dois modos de revisão. Se o modo estiver definido como "revisão antes da publicação", o vídeo só ficará disponível para reprodução após ser aprovado. Os dois modos são:
Publicar antes de revisar: após a transcodificação, o vídeo é marcado como Normal por padrão e pode ser reproduzido diretamente. A revisão manual deve ser feita em seguida. Se o vídeo for bloqueado após a revisão, ele não poderá mais ser reproduzido.
Revisar antes de publicar: após a transcodificação, o vídeo entra automaticamente no processo de revisão e é marcado como Em Revisão. Ele só ficará disponível para reprodução após a aprovação na revisão manual.
Análise de parâmetros
VideoID
Por questões de segurança, o ApsaraVideo VOD fornece um ID de vídeo (videoID) em vez de uma URL direta ao fazer upload de um arquivo de mídia. Você também pode obter o videoID chamando uma OpenAPI do ApsaraVideo VOD. Para obter mais informações, consulte Get a video playback URL.
Após fazer upload de um vídeo para o ApsaraVideo VOD, você obtém um videoID.
Também é possível obter o videoID no console do ApsaraVideo VOD. O procedimento é o seguinte:
Acesse o ApsaraVideo VOD console.
No painel de navegação à esquerda, na seção Media Files, clique em Audio/Video.
Na lista de vídeos, obtenha o videoID.
Use o videoID obtido no console para testar o download e a reprodução. Para obter mais informações sobre como fazer upload de arquivos para o ApsaraVideo VOD, consulte Overview of the upload SDK.
AccessKey ID e AccessKey secret
O AccessKey ID e o AccessKey secret da Alibaba Cloud são as únicas credenciais para acessar as APIs da Alibaba Cloud. O AccessKey ID é um identificador de identidade. O AccessKey secret funciona como uma senha — nunca o divulgue.
Para obter suas credenciais:
Acesse o ApsaraVideo VOD console.
Passe o ponteiro do mouse sobre sua foto de perfil no canto superior direito e clique em AccessKey no menu de atalho.
Na página AccessKey, crie um par de AccessKey ou visualize o AccessKey secret de um AccessKey ID existente.
PlayKey
Uma playKey (chave de API) é uma chave de reprodução usada para autenticar a identidade quando o SDK do player obtém uma URL de reprodução de vídeo. A autenticação de reprodução é um mecanismo de autenticação secundária baseado na autenticação de segurança por AccessKey da Alibaba Cloud, capaz de prevenir hotlinking de forma eficaz. Por padrão, as playKeys são fornecidas para as plataformas Flash, HTML5, iOS e Android, de acordo com as plataformas que os usuários podem usar para reprodução.
Para garantir a segurança da chave, é necessário inserir um código de verificação enviado para o seu celular para confirmar sua identidade ao visualizar uma playKey.
Para obter uma chave:
Acesse o ApsaraVideo VOD console.
No painel de navegação à esquerda, em Configuration Management, escolha CDN Configuration > Download Settings. Ative o modo de download seguro.
Na seção Get Key, insira o Unique App Identifier e a Private Key.
Clique em Generate and Download Key.
Playauth
O player suporta três modos de reprodução. O modo playauth, implementado via método setAuthInfo, é o mais seguro e recomendado para uso comercial.
Uma playauth é uma string criptografada que contém informações como o videoID, o AccessKey ID e o AccessKey secret. O service ApsaraVideo VOD combina e criptografa essas informações. Quando o player recebe a playauth, ele consegue reproduzir o vídeo.
|
Modo de reprodução |
Cenários |
Vantagens e desvantagens |
Recomendação |
|
setDataSource |
Para testes |
Risco de vazamento. É necessário escrever o AccessKey ID e o AccessKey secret diretamente no código do cliente. Se o cliente for comprometido, as chaves poderão ser expostas. |
Não recomendado para uso comercial. |
|
setAuthInfo |
Para uso comercial |
Seguro. Nenhuma URL ou link de vídeo é exposto. |
Recomendado para uso comercial. |
|
Reproduzir URLs locais e de rede |
Permite reproduzir vídeos locais e URLs de vídeo |
Simples. Compatível com vídeos de outras plataformas. |
Use quando precisar reproduzir vídeos locais ou de rede. |
Fluxo: O servidor obtém uma credencial de reprodução > O servidor envia a credencial de reprodução ao cliente > A reprodução do vídeo é concluída.
Obtenha uma credencial de reprodução: no servidor, chame o SDK de autenticação de reprodução (SDK do lado do servidor) para obter uma credencial de reprodução do service ApsaraVideo VOD.
Conclusão da reprodução do vídeo: o SDK do player usa o ID do vídeo e a credencial de reprodução para obter a URL de reprodução do vídeo junto ao service ApsaraVideo VOD. Em seguida, carrega o stream de vídeo e o decodifica para reprodução.
Uma credencial de reprodução é válida por 100 segundos e pode ser usada apenas uma vez para obter a URL de reprodução de um vídeo específico.
O SDK do player usa a credencial de reprodução para obter automaticamente a URL de reprodução para decodificação. Essa URL é válida por 30 minutos. Se a credencial expirar, obtenha uma nova para atualizar a URL.
Para garantir a segurança da conta, use sempre o par de AccessKey de um usuário RAM, especialmente em cenários de reprodução web.
Limites sobre troca de faixa de áudio, controle de velocidade de reprodução e reprodução em mini programs
Por que o Chrome não consegue alternar faixas de áudio em um arquivo MP4?
O Chrome não suporta a API HTMLMediaElement.audioTracks e, portanto, não consegue alternar entre faixas de áudio em um arquivo MP4. Use um stream HLS no formato M3U8. O ApsaraVideo Player SDK para web utiliza hls.js para alternar entre múltiplas faixas de áudio em streams HLS. Como alternativa, use empacotamento e transcodificação multi-faixa para gerar um arquivo M3U8.
Por que o vídeo trava quando o player Flutter alterna faixas de áudio?
Quando o player Flutter alterna faixas de áudio, ele limpa o buffer de reprodução para evitar a dessincronização entre áudio e vídeo. O travamento aparente durante a limpeza do buffer é esperado. Exiba um indicador de carregamento na interface do seu aplicativo até que a reprodução seja retomada.
Como impedir que os usuários alterem a velocidade de reprodução?
Ocultar o botão de velocidade de reprodução afeta apenas a interface do player e não impede que os usuários alterem a velocidade por meio de ferramentas do navegador ou JavaScript.
Monitore o evento JavaScript ratechange e redefina a propriedade playbackRate para 1 sempre que ela for alterada. Utilize também setInterval para verificar periodicamente o valor de playbackRate e redefini-lo para 1 quando necessário.
É possível usar o ApsaraVideo Player SDK para web ou DRM em um mini program?
Os mini programs do WeChat não suportam o ApsaraVideo Player SDK para web nem a reprodução criptografada com DRM. Para reproduzir um vídeo com criptografia HLS padrão em um mini program do WeChat, use o componente nativo Video com um service de descriptografia próprio. Outros mini programs, como os do TikTok, podem usar o player integrado ou integrar o ApsaraVideo Player SDK para web em uma WebView.
O elemento de vídeo nativo do Android consegue reproduzir arquivos M3U8?
A maioria dos dispositivos Android não suporta nativamente a reprodução HLS em um elemento video. Converta o stream para MP4 ou integre o ApsaraVideo Player SDK para web em uma WebView.