Falha ao fazer upload do arquivo de vídeo devido a erro de JS

Sei que, em geral, o Discourse não é feito para upload de vídeos, dito isso, encontrei um problema para o qual esperava que alguém pudesse me indicar a direção certa para descobrir.

Alguns arquivos de vídeo que são enviados ficam presos em “Enviando 100%” indefinidamente. A única opção restante para um usuário é atualizar a página ou fechar a postagem, independentemente de quanto tempo se espera ou quão pequeno é o arquivo.

É claro que há código fazendo algum tipo de validação ou verificação que o arquivo está preso, sou bem novo no desenvolvimento Ruby On Rails / Discourse, então ainda não descobri onde no caminho o arquivo está preso. No entanto, descobri uma maneira de contornar o problema e enviar o arquivo sem problemas, embora de uma maneira nada amigável para o usuário.

Se eu pegar o mesmo arquivo, renomear a extensão do nome do arquivo de .mp4 para .pdf, o arquivo é enviado sem problemas e, na verdade, é adicionado com a extensão correta também.

por exemplo.
Se eu enviar PXL_12234563421LS.mp4, o arquivo ficará preso indefinidamente, se eu enviar como: PXL_12234563421LS.pdf, o upload é concluído e até mesmo coloca a marcação de vídeo correta na postagem:

![PXL_20200811_12234563421LS|video](upload://sxVpgLrc3L2MukaD5eS5QOgPY7j.mp4)

Alguém está familiarizado o suficiente com esse caminho para explicar o que está acontecendo e há alguma maneira de desativar isso em algum lugar? Também estou feliz em descobrir exatamente onde está o problema e talvez registrar um bug com alguma orientação.

Obrigado.

4 curtidas

Talvez seja um problema de internet.
Mas, normalmente, recarregar a página resolve e o vídeo pode ser carregado?

Agradeço a resposta, mas este não é um problema de internet. Ocorre em todos os computadores e em vários navegadores. Estou fazendo o upload na mesma rede em que a instância do Discourse está em execução, portanto, não está acessando a internet.

A alteração da extensão que leva a um upload bem-sucedido, mesmo na mesma postagem em que o arquivo original ainda está “fazendo upload”, aponta definitivamente para algum código no Discourse executado para arquivos de vídeo que está travando em determinados arquivos indefinidamente.

1 curtida

Há algum erro aparecendo no console?

Você pode fazer o upload do vídeo para try.discourse.org?

1 curtida

Qual o tamanho do arquivo? Acredito que o tamanho máximo do arquivo seja 30MB.

Eu também teria perguntado se isso é via celular ou PC, mas você menciona um computador abaixo.

Eu tentei fazer isso em try.discourse.org, mas arquivos .mp4 não são permitidos lá, desculpe, eu deveria ter colocado isso na minha postagem original.

Além disso, este é um arquivo pequeno, tem apenas 8 MB. Descobri que o tamanho do arquivo não importa.

Quando você pergunta se ocorrem erros no console, estou olhando os logs e vejo o upload começar e depois nada mais é exibido para esse evento, existe algum outro lugar a que você se refere como console que eu deveria olhar?

Tanto no celular quanto no PC, o mesmo problema é exibido. É definitivamente específico dos arquivos produzidos. Se eu re-codificar o arquivo com o ffmpeg, o problema também desaparece. Além disso, testei no Chrome e no Firefox, e ambos exibem o mesmo problema.

Apenas para esclarecer, tudo o que estou fazendo é alterar o nome do arquivo de “movie.mp4” para “movie.pdf” e, em seguida, ele é carregado sem ficar preso em “Enviando 100%”.

O tamanho do arquivo é de 8 MB. Qualquer um dos arquivos de filme que exibe esse problema pode ter qualquer tamanho. Se eu pudesse determinar e rastrear o caminho que ele está percorrendo durante o upload, provavelmente conseguiria identificar onde ele está travando.

Tente agora, acabei de adicionar.

Refiro-me ao console do navegador - algo é exibido lá ou nos logs do servidor (/logs)?

Tudo bem, consigo reproduzir o problema. Tive que encontrar um exemplo um pouco menor, mas tenho vários :slight_smile:

A primeira imagem mostra eu carregando o arquivo com a extensão .mp4 e travando em “Enviando 100%” independentemente de quanto tempo eu espere. Esperei 5 minutos antes de tirar a captura de tela.

Deixei a postagem aberta e travada no estado “Enviando 100%” em try.discourse.org, usuário: testdub. Se isso ajudar do seu lado. Vou deixar aberto até receber uma resposta.

Vocês não permitem PDFs, mas permitem TXT, então apenas renomeei o arquivo para .txt e o upload foi concluído.

Quando eu carrego o mesmo arquivo com a extensão .txt, ele é concluído em segundos e aparece como markdown de vídeo.

Apenas para completar, aqui estão os md5s dos arquivos que eu carreguei:

62b865b29c47acbce859c27246c0d7c3  PXL_20240812_174504425.LS.mp4
62b865b29c47acbce859c27246c0d7c3  PXL_20240812_174504425.LS.txt

Aqui está o erro que vejo no console do navegador ao tentar carregar esse arquivo:

image

Uncaught IndexSizeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.
    at composer-video-thumbnail-uppy.js:80:31

8998f3f964284f7e0ab4007836dbddd736757617.mp4.gz (3,3 MB)

Isso é algo no lado do cliente que precisaremos corrigir.

2 curtidas

Sim, ótimo, obrigado Michael!

Eu estava no meio de responder com algo semelhante:


Quando olho para o console do Firefox, vejo algo como isto:

Media resource blob:devsite.net could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_METADATA_ERR (0x806e0006)

No Chrome, recebo um erro diferente e talvez melhor sobre o que pode estar acontecendo aqui:

Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.
    at https://devsite.net/assets/chunk.d340137c92abde91812c.d41d8cd9.js:74:3649
3 curtidas

Tive um problema semelhante, no WordPress. E então o MP4 quebrou. Acabei de fazer upload de um MP4 curto sem problemas e, se funcionar, talvez o próprio MP4, ou o processo que o criou, deva verificar?

Já conseguiu resolver?

Temos alguém olhando para um conserto, sim.

3 curtidas

Correção para este problema já está disponível:

3 curtidas

Olá Blake, obrigado pela rápida resolução! Testei isso e funciona muito bem no Chrome, mas não funciona no Firefox. Ainda fico preso em “Enviando 100%” e recebo o seguinte erro no console:

Media resource blob:https://devsite.net/a2deff66-3376-4c6e-9cca-f18275c312ce could not be decoded.
Media resource blob:https://devsite.net/a2deff66-3376-4c6e-9cca-f18275c312ce could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_METADATA_ERR (0x806e0006)

Testei isso com o Firefox 129.0.2.

Me avise se houver alguma outra informação que eu possa fornecer.

1 curtida

Este conserto deve resolver o problema. Neste caso, uma miniatura de vídeo não será criada para o vídeo, mas desta vez não impedirá o upload real.

3 curtidas

Obrigado, consegui fazer o upload com sucesso usando o Firefox. Agradeço muito a rápida resposta e o acompanhamento!

2 curtidas

Este tópico foi fechado automaticamente 3 dias após a última resposta. Novas respostas não são mais permitidas.