Este tópico descreve problemas comuns e soluções para uploads de ativos de mídia.
Posso sobrescrever ou substituir um vídeo existente ao fazer upload de um novo vídeo?
Não. O ApsaraVideo VOD não permite sobrescrever ou substituir um vídeo existente pelo upload de um novo arquivo. Para atualizar um vídeo, faça o upload do novo arquivo separadamente; isso gera um novo VideoId. Em seguida, substitua manualmente o endereço de referência usado em seu sistema pelo novo VideoId.
Por que meu arquivo fica travado com status 'Uploading'?
Esse problema pode ter os seguintes motivos:
-
Motivo 1: O upload em lote via URL é assíncrono.
Ao usar a operação de API UploadMediaByURL, o upload funciona como uma tarefa assíncrona. A conclusão não ocorre em tempo real e pode levar várias horas ou até dias. Essa operação tem suporte apenas nas regiões China (Shanghai), China (Beijing), China (Shenzhen), Singapore e U.S. (Silicon Valley). Recomendamos integrar o server-side upload SDK do ApsaraVideo VOD para realizar uploads.
-
Motivo 2: Apenas a credencial de upload foi gerada, mas nenhum arquivo foi enviado. Esse cenário é frequentemente descrito como "a operação de API CreateUploadVideo retorna sucesso, mas o console ainda exibe o vídeo como 'Uploading'".
A chamada à operação de API CreateUploadVideo obtém apenas uma credencial de upload e cria informações básicas para o ativo de mídia, sem enviar o arquivo. O sucesso dessa operação não indica que o upload foi concluído. Use os valores retornados de
UploadAutheUploadAddresspara chamar o SDK ou uma operação de API e enviar o arquivo ao Object Storage Service (OSS). Para obter as etapas completas, consulte Upload media files by calling the ApsaraVideo VOD API. Adicione logs ou pontos de interrupção no código para confirmar se a etapa de upload está sendo executada corretamente e verifique o resultado. -
Motivo 3: Arquivos grandes resultam em tempos de upload prolongados.
Verifique se o tamanho do arquivo e o tempo decorrido no status 'Uploading' são compatíveis. Uploads feitos pelo console, SDK de upload ou ferramentas de cliente usam upload multipartido por padrão, que aceita arquivos individuais de até 48,8 TB. O SDK de upload também oferece um recurso de upload simples, limitado a arquivos de até 5 GB.
-
Motivo 4: Problemas de rede.
Confirme se a largura de banda da sua rede atende aos requisitos necessários.
O ApsaraVideo VOD não impõe limites de velocidade de upload. A velocidade real depende da sua largura de banda local e das condições da rede. Para arquivos grandes (superiores a 700 MB, por exemplo), é normal que o upload e a transcodificação subsequente demorem bastante. Verifique sua conexão de rede ou o desempenho da ferramenta de upload.
Uploads entre regiões (por exemplo, dos EUA para Singapore) sofrem impacto significativo da latência de rede. Não é possível fornecer uma estimativa fixa de tempo para esses cenários.
Se um vídeo permanecer com o status 'Uploading' por muito tempo e a transcodificação não iniciar, geralmente o arquivo ainda não terminou de ser enviado. O sistema aciona a transcodificação automaticamente somente após a conclusão do upload. Consulte o progresso específico no console ou na ferramenta de upload e mantenha a página ativa até o fim do processo.
Caso o console apresente um indicador giratório contínuo ou o upload trave, use um dos métodos abaixo para diagnosticar o problema:
Pressione F12 para abrir as ferramentas de desenvolvedor do navegador e verifique a aba Network em busca de requisições com falha ou respostas de erro.
Use ferramentas de captura de pacotes, como Wireshark, para analisar as requisições de rede do cliente e identificar problemas de conexão.
Por que o console continua exibindo "Uploading" mesmo após o VOD SDK acionar o callback onUploadSucceed?
Geralmente, isso ocorre porque o arquivo não foi totalmente carregado no Object Storage Service (OSS). Verifique se a configuração content-length-range na sua PostPolicy está restritiva demais; recomenda-se definir o valor como 5368709120 (5 GB). Confirme também se sua rede local está funcionando normalmente e se o upload do arquivo foi realmente concluído. Se o problema persistir, tente fazer o upload novamente.
Qual é a diferença entre setUploadAuthAndAddress e resumeUploadWithAuth no JavaScript SDK?
Os dois métodos atendem a cenários de upload distintos:
uploader.setUploadAuthAndAddress(uploadAuth, uploadAddress, videoId, mediaType): Use este método para uploads iniciais. Faça a chamada após obter uma nova credencial de upload do servidor por meio de CreateUploadVideo - Obtain a video upload URL and credential.uploader.resumeUploadWithAuth(uploadAuth): Use este método para retomar um upload interrompido ou renovar uma credencial existente. Execute a chamada depois que o servidor renovar a credencial via RefreshUploadVideo - Refresh a video upload URL and credential.
Solução de problemas para falta de resposta ou erros:
-
Verifique se
uploadInfo.videoIdpossui valor:Se houver valor, o servidor deve chamar
RefreshUploadVideopara renovar a credencial.Se estiver vazio, chame
CreateUploadVideono servidor para obter uma nova credencial.
-
Valide a lógica de chamada no frontend:
Após obter uma nova credencial, chame
setUploadAuthAndAddress.Após renovar uma credencial existente, chame
resumeUploadWithAuth.
Confira se as permissões da credencial e os parâmetros retornados pelo servidor estão corretos.
O que fazer se o upload falhar com erro de palavra sensível ou violação de nome de arquivo?
Causa: Ao chamar a operação de API CreateUploadVideo, se o nome do arquivo de vídeo contiver palavras sensíveis, o upload será bloqueado ou a verificação de permissão falhará.
Solução: Renomeie o arquivo de vídeo para remover quaisquer palavras sensíveis e chame novamente a operação de API CreateUploadVideo para obter uma nova credencial de upload.
Como lidar com exceções de upload simultâneo ou problemas de fim de manutenção nos SDKs de upload para Android/iOS?
Para SDKs sem manutenção: Evite criar múltiplas instâncias de uploader simultaneamente. Garanta que a tarefa de upload anterior seja concluída antes de iniciar a próxima.
Exceção de ponteiro nulo no Android SDK: O Android SDK pode lançar uma exceção de ponteiro nulo e travar ao realizar múltiplas chamadas sob uma única instância ou executar uploads simultâneos de várias imagens. Trata-se de um problema conhecido, causado por conflitos nos processos internos de liberação e cancelamento. Recomendamos usar uploads sequenciais para evitar esse risco.
Por que o upload de um arquivo que não é vídeo exibe sucesso ou retorna erro 500 no callback?
Sucesso no upload de arquivos não relacionados a vídeo: Imagens e arquivos de áudio são tipos de mídia suportados e podem ser enviados normalmente. Se um tipo de arquivo completamente diferente apresentar sucesso no upload, a extensão pode ter sido identificada incorretamente, uma lógica personalizada pode ter ignorado a verificação ou o upload via API pode não estar aplicando validação rigorosa de formato. Verifique a lista de extensões de arquivo suportadas.
Callback retorna erro 500: O ApsaraVideo VOD não suporta o upload de documentos de texto, como arquivos .docx. Tentar enviar esses arquivos não relacionados a mídia e acionar um callback resulta em erro 500. Envie apenas tipos de mídia suportados, como áudio e vídeo, ou desative configurações desnecessárias de callback no console.
Um grande número de tarefas de upload em andamento afeta os uploads de outros usuários? Como limpar tarefas inválidas?
Independência das tarefas: As tarefas de upload são independentes. Uma grande quantidade de tarefas em execução em segundo plano geralmente não interfere nos uploads normais de outros usuários.
Limpeza de tarefas inválidas:
Se você chamou apenas a API de criação de credencial, mas não enviou o arquivo real, a tarefa permanecerá indefinidamente com o status 'Uploading' e não será fechada automaticamente.
Tarefas que falham devido à interrupção do upload não são excluídas automaticamente.
Em ambos os casos, cancele ou exclua as tarefas manualmente no console.
O que fazer se um upload falhar no iOS upload SDK com o erro Error Domain=NSCocoaErrorDomain?
Uma falha de upload com código de erro 207 e mensagem "Error Domain=NSCocoaErrorDomain" geralmente é causada por erro de leitura de arquivo devido à falta de permissões. Para resolver, use um dos métodos abaixo:
Método 1: Conceda ao SDK de upload para iOS permissão para ler recursos locais.
Método 2: Armazene os recursos locais no caminho sandbox antes de fazer o upload.
O que fazer se ocorrer o erro "The service is not open in current region" durante um upload em lote via URL?
A mensagem de erro The service is not open in current region indica que o upload em lote via URL não tem suporte na região atual. Atualmente, essa funcionalidade está disponível apenas nas regiões China (Shanghai) e Singapore.
Se estiver em outra região, baixe os arquivos de áudio ou vídeo para o computador local e use o SDK de upload para enviá-los. Para mais informações, consulte SDK Overview.
Por que não consigo visualizar uma imagem enviada no console?
Ao fazer upload de um ativo de mídia do tipo imagem, se o tipo for definido como cover (miniatura de vídeo), o arquivo não será exibido no console. A consulta da imagem só é possível por meio de uma operação de API. Para mais detalhes, consulte CreateUploadImage - Obtain an image upload URL and credential.
O que fazer se um vídeo enviado no formato MOV não puder ser reproduzido e eu não conseguir obter sua URL pelo VideoId?
Esse problema geralmente decorre do suporte limitado ao formato MOV. Recomendamos transcodificar o vídeo MOV para um formato comum, como MP4, antes do upload. Caso precise obter a URL de reprodução do arquivo source, chame a operação GetMezzanineInfo para recuperar o FileURL. Verifique também se está usando a versão mais recente do SDK (por exemplo, vod20170321 versão 3.6.4) e atualize se necessário; consulte o demo oficial para testes e validação.
Problemas de compatibilidade com uploads do JS SDK no WeChat
Esse problema ocorre devido a uma incompatibilidade com HTML5 no navegador do WeChat. Para resolvê-lo, remova o parâmetro multiple="" de <input type="file" name="file" id="files" multiple=""> para garantir o sucesso do upload.
O que fazer se onUploadProgress não for acionado e nenhum erro for reportado ao usar o Web SDK?
Realize a solução de problemas na seguinte ordem:
Verifique o ambiente do navegador: Desative extensões de bloqueio de anúncios (como AdBlock ou uBlock Origin) ou adicione o domínio da Alibaba Cloud à lista de permissões dessas extensões. Se usar Microsoft Edge, desative temporariamente a Tracking prevention ou o Enhanced security mode para testar se o problema persiste.
Analise a lógica do código do SDK: Confirme se
uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress, videoId)é chamado sincronamente no callbackonUploadStarted.Valide o formato e a validade dos parâmetros: Confira se
uploadAutheuploadAddresssão strings codificadas em Base64 válidas, se a estrutura corresponde ao demo oficial e se a credencial ainda está dentro do período de validade de 30 minutos.Imprima os valores reais dos parâmetros passados para
setUploadAuthAndAddresse verifique se algum valor está vazio ou apresenta formato inesperado.
O que fazer se o upload retomável falhar com AccessDenied ou mensagem indicando ausência da função AliyunVodSaasStsRole?
Não é necessário criar manualmente a função AliyunVodSaasStsRole. Erros AccessDenied geralmente são causados por um dos seguintes motivos:
Após a renovação da credencial, o novo
UploadAuthnão foi passado ao métodoresumeUploadWithAuth.Ao usar o SDK nativo do OSS,
UploadAutheUploadAddressnão foram decodificados de Base64.O token STS expirou ou não possui permissões suficientes.
O caminho do arquivo de upload não corresponde ao caminho autorizado na política STS (por exemplo, pasta
svem vez da pastacustomerTrans).
A permissão necessária é oss:PutObject. Para resolver:
Garanta que o caminho de upload corresponda ao caminho autorizado na política RAM ou STS, ou atualize a política para incluir o diretório real de upload.
Revise a lógica de passagem e decodificação de credenciais no seu código.
Confirme se o token ainda está dentro do período de validade.
Distorção na página de visualização em resoluções específicas com o Push SDK
Ao selecionar a resolução 480p no Push SDK, a página de visualização aparece distorcida, embora a ingestão de stream real funcione normalmente. Isso acontece porque 480p corresponde a uma resolução de 480 × 640. A proporção de tela não é suportada pela maioria das telas de celulares, causando a distorção.
Solução: Modifique a proporção do SurfaceView na página de visualização. Altere o conteúdo do arquivo activity_push.xml conforme abaixo.
public void initView() {
mPreviewView = (SurfaceView) findViewById(R.id.preview_view);
mPreviewView.getHolder().addCallback(mCallback);
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<SurfaceView
android:id="@+id/preview_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!--FrameLayout-->
<!--android:id="@+id/publisher_fragment"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:visibility="gone"/>-->
<android.support.v4.view.ViewPager
android:id="@+id/tv_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</android.support.v4.view.ViewPager>
</RelativeLayout>
Como visualizar e importar dados de pacote AAR no Android Studio
Para visualizar os dados do pacote AAR, altere a extensão do arquivo de .aar para .zip e descompacte-o. Em seguida, visualize o conteúdo, como arquivos .class, arquivos .xml, arquivos .jar, imagens e textos.
Para importar dados do pacote AAR:
Copie o arquivo
.aarpara a pasta do projeto, geralmente no caminho projectName/libs/, e recarregue o projeto. Copie os arquivos de biblioteca, comoAlivcPlayer.aar,aliyun-vod-upload-android-sdk-1.1.1.jar,aliyun-vod-croe-android-sdk-1.2.1.jar,gson-2.8.0.jarejsr305-3.0.0.jar, para o diretório app > libs do projeto e recarregue-o.-
No arquivo build.gradle, adicione o caminho do repositório local sob a tag raiz e inclua a dependência de compilação no bloco
dependencies.O nome do diretório libs depende da pasta onde o pacote é importado no projeto. No parâmetro compile, name especifica o nome do arquivo AAR e ext define a extensão do arquivo.
repositories{ flatDir{ dirs 'libs' } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:26+' compile 'com.android.support:design:26+' compile (name:'AlivcPlayer',ext:'aar') // The upload SDK depends on the OSS upload SDK compile 'com.aliyun.dpa:oss-android-sdk:2.4.5' } -
Selecione Build > Rebuild para recompilar o projeto.
Após a conclusão da compilação, o pacote AAR importado aparecerá na seção External Libraries do projeto.
External Libraries ├── Android API 26 Platform ├── JRE 1.8 ├── AlivcPlayer:@aar │ ├── classes.jar (library root) │ │ └── com │ │ ├── alivc.player │ │ └── aliyun.aliyunplayer │ └── res (library root) │ ├── values │ └── values-zh-rCN ├── com.aliyun.dpa:oss-android-sdk-2.4.5 ├── com.android.support:animated-vector-drawable:26.0.0-alpha1 ├── com.android.support:appcompat-v7:26.0.0-alpha1 ├── com.android.support:design:26.0.0-alpha1 ├── com.android.support:recyclerview-v7:26.0.0-alpha1 ├── com.android.support:support-annotations:26.0.0-alpha1 └── com.android.support:support-compat:26.0.0-alpha1
É normal que um upload em lote via URL demore muito para concluir?
O upload em lote via URL é uma tarefa assíncrona. O sistema precisa primeiro baixar o arquivo da URL de origem e depois enviá-lo ao ApsaraVideo VOD. Para arquivos grandes, ou quando a largura de banda do servidor de origem é limitada, esse processo pode levar várias horas. Esse comportamento é esperado. Recomendamos as seguintes ações:
Confirme se a URL de origem está acessível pela Internet e se a velocidade de download está normal.
Para arquivos grandes que precisam estar disponíveis rapidamente, use o SDK de upload do lado do servidor ou o SDK de upload do lado do cliente.
Por que nenhum VideoId é gerado após um upload no servidor, ou por que o host é resolvido como localhost?
Ambos os sintomas geralmente são causados por configuração incorreta de região durante a inicialização do cliente de upload. Ao inicializar vodClient, defina explicitamente o regionId correto, como cn-beijing, e use o endpoint público dessa região. Isso evita que o nome de domínio seja resolvido incorretamente.
O que fazer se um erro de rede for reportado durante o upload no console ou página web?
Erros de rede geralmente estão relacionados ao navegador ou ao ambiente de rede local. Tente o seguinte:
Troque de navegador ou de rede e tente o upload novamente.
Confirme se sua rede local consegue resolver o domínio de upload do OSS. Use o comando
pingpara verificar.Se o problema persistir, use o SDK de upload do lado do servidor para enviar o arquivo.
Quais políticas de rede preciso permitir se a conexão com o domínio OSS expirar durante o upload de vídeo?
Além de liberar a porta 443 em vod.cn-shanghai.aliyuncs.com, é necessário liberar a porta 443 no domínio OSS de destino real do upload (por exemplo, outin-*.oss-cn-shanghai.aliyuncs.com). Recomendamos também liberar a porta 443 em vod-upload.cn-shanghai.aliyuncs.com (endpoint de upload) e sts.cn-shanghai.aliyuncs.com (usado para obter credenciais temporárias). Se o servidor estiver implantado em uma VPC, configure um gateway NAT ou um EIP para acessar esses domínios públicos.
O ApsaraVideo VOD fornece o valor hash MD5 ou CRC-64 de um vídeo enviado?
Não. O ApsaraVideo VOD não oferece recurso para consultar valores hash MD5, CRC-64 ou outros de um vídeo enviado. Se o seu negócio exigir verificação de integridade de arquivo, calcule e registre o valor hash no lado do cliente ou do servidor antes de fazer o upload.
Links relacionados
Para mais informações sobre o fluxo de upload e instruções, consulte os documentos abaixo:
Para saber como fazer upload de arquivos usando o console do ApsaraVideo VOD ou ferramentas de upload para PC, consulte Upload using tools.
Para saber como fazer upload de arquivos usando o SDK de upload do ApsaraVideo VOD, SDK nativo do OSS, upload em lote via URL ou operações de API do OSS, consulte Developer-based upload.
O que fazer se Content-Type for exibido como application/octet-stream após um upload em lote via URL?
O parâmetro FileExtension na operação de API UploadMediaByURL especifica o formato do arquivo de origem para que o ApsaraVideo VOD possa transcodificar e reproduzir a mídia corretamente. Ele não modifica os metadados Content-Type do objeto no Object Storage Service (OSS). Portanto, Content-Type pode ser exibido como application/octet-stream após um upload em lote via URL.
Para alterar Content-Type para um valor como video/mp4, use o comando set-meta no ossutil após o upload para modificar os metadados do arquivo no OSS em massa. Alternativamente, acione a transcodificação para gerar um novo arquivo. A transcodificação gera custos.
Como verificar o status de uma tarefa de upload em lote via URL e solucionar falhas de upload?
Se um upload em lote via URL falhar ou se for necessário confirmar o progresso de uma tarefa, chame a operação de API GetURLUploadInfos para consultar o status da tarefa. Use as informações retornadas para diagnosticar a falha. Se a falha for causada por inconsistência entre a interface de armazenamento do OSS e sua configuração, use essas informações para identificar a discrepância. Verifique se a interface de armazenamento do OSS e a configuração estão alinhadas.