Sé que, en general, Discourse no está diseñado para la carga de vídeos. Dicho esto, me he encontrado con un problema para el que esperaba que alguien pudiera orientarme.
Algunos archivos de vídeo que se cargan se quedan atascados en “Subiendo 100%” indefinidamente. La única opción que le queda al usuario es actualizar la página o cerrar la publicación, sin importar cuánto tiempo se espere o cuán pequeño sea el archivo.
Está claro que hay código realizando algún tipo de validación o comprobación en la que el archivo se queda atascado. Soy bastante nuevo en el desarrollo de Ruby On Rails / Discourse, por lo que aún no he descubierto en qué parte del proceso se atasca el archivo. Sin embargo, he encontrado una manera de evitar el problema y cargar el archivo sin ningún inconveniente, aunque de una manera poco amigable para el usuario.
Si tomo exactamente el mismo archivo, cambio la extensión del nombre del archivo de .mp4 a .pdf, el archivo se carga sin ningún problema e incluso se añade con la extensión correcta.
por ejemplo:
Si subo PXL_12234563421LS.mp4, el archivo se quedará atascado indefinidamente. Si lo subo como: PXL_12234563421LS.pdf, la carga se completa e incluso pone el markdown de vídeo correcto en la publicación:
¿Alguien está lo suficientemente familiarizado con este proceso como para explicar qué está pasando y hay alguna manera de deshabilitar esto en algún lugar? También estoy dispuesto a averiguar exactamente dónde está el problema y quizás presentar un informe de error con alguna guía.
Agradezco la respuesta, pero no es un problema de internet. Ocurre desde todas las computadoras y en todos los navegadores. Estoy subiendo esto desde la misma red desde la que se está ejecutando la instancia de Discourse, por lo que no sale a internet.
El cambio de la extensión que lleva a una carga exitosa, incluso en la misma publicación donde el archivo original todavía se está “cargando”, definitivamente apunta a algún código en Discourse que se ejecuta para archivos de video y que se atasca indefinidamente en ciertos archivos.
Intenté hacer esto en try.discourse.org pero los archivos .mp4 no están permitidos allí, lo siento, debería haberlo puesto en mi publicación original.
Además, este es un archivo pequeño, solo 8 megas. He descubierto que el tamaño del archivo no importa.
Cuando dices si ocurren o no errores en la consola, estoy mirando los registros y veo que la carga comienza y luego no se muestra nada más para ese evento, ¿hay algún otro lugar al que te refieras como la consola que deba mirar?
Tanto en el móvil como en el PC se muestra el mismo problema, definitivamente es específico de los archivos que se producen; si vuelvo a codificar el archivo con ffmpeg, el problema también desaparece. Además, he probado Chrome y Firefox y ambos muestran el mismo problema.
Para que quede claro, lo único que hago es cambiar el nombre del archivo de “película.mp4” a “película.pdf” y entonces se sube sin quedarse atascado en “Subiendo 100%”.
El tamaño del archivo es de 8 MB, cualquiera de los archivos de películas que muestran este problema puede ser de cualquier tamaño. Si pudiera determinar y rastrear la ruta que sigue mientras se está subiendo, probablemente podría reducir dónde se atasca.
De acuerdo, puedo reproducirlo allí, tuve que encontrar un ejemplo un poco más pequeño pero tengo muchos
La primera imagen me muestra subiendo el archivo con una extensión .mp4 y se queda atascado en “Subiendo 100%” sin importar cuánto espere. Esperé 5 minutos antes de tomar la captura de pantalla.
Dejé la publicación abierta y atascada en el estado “Subiendo 100%” en try.discourse.org, usuario: testdub. Si eso ayuda de su lado. La dejaré abierta hasta que reciba respuesta.
No permiten PDFs pero sí TXT, así que simplemente renombré el archivo a .txt y la carga se completó.
Cuando subo el mismo archivo con la extensión .txt, se completa en segundos y aparece como markdown de video.
Aquí está el error que veo en la consola del navegador al intentar cargar ese archivo:
Uncaught IndexSizeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.
at composer-video-thumbnail-uppy.js:80:31
Cuando miro la consola de Firefox, veo algo como esto:
Media resource blob:devsite.net could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_METADATA_ERR (0x806e0006)
En Chrome obtengo un error diferente y quizás mejor sobre lo que podría estar sucediendo aquí:
Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.
at https://devsite.net/assets/chunk.d340137c92abde91812c.d41d8cd9.js:74:3649
He tenido un problema similar en WordPress. Y luego el MP4 se rompió. Acabo de subir un MP4 corto sin problemas y si funciona, ¿quizás el MP4 en sí, o el proceso que lo creó, debería comprobarlo?
Hola Blake, ¡gracias por una respuesta tan rápida! Probé esto y funciona muy bien en Chrome, pero no funciona en Firefox. Todavía me quedo atascado en “Subiendo 100%” y obtengo el siguiente error en la consola:
No se pudo decodificar el recurso multimedia blob:https://devsite.net/a2deff66-3376-4c6e-9cca-f18275c312ce.
No se pudo decodificar el recurso multimedia blob:https://devsite.net/a2deff66-3376-4c6e-9cca-f18275c312ce, error: Código de error: NS_ERROR_DOM_MEDIA_METADATA_ERR (0x806e0006)
Probé esto con Firefox 129.0.2.
Avísame si hay alguna otra información que pueda proporcionar.