La carga del archivo de video falla debido a un error de JS

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:

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

¿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.

Gracias.

4 Me gusta

Quizás sea un problema de Internet.
Pero, por lo general, ¿un recargar la página soluciona el problema y el video se puede subir?

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.

1 me gusta

¿Aparece algún error en la consola?

¿Puedes subir el video a try.discourse.org?

1 me gusta

¿Qué tan grande es el archivo? Creo que el tamaño máximo de archivo es de 30 MB.

También habría preguntado si esto es a través de móvil o PC, pero mencionas una computadora a continuación.

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.

Inténtalo ahora, acabo de añadirlo.

Me refiero a la consola del navegador, ¿aparece algo ahí o en los registros del servidor (/logs)?

De acuerdo, puedo reproducirlo allí, tuve que encontrar un ejemplo un poco más pequeño pero tengo muchos :slight_smile:

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.

Solo para completar, aquí están los md5 de los archivos que subí:

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

Aquí está el error que veo en la consola del navegador al intentar cargar ese archivo:

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)

Esto es algo del lado del cliente que necesitaremos arreglar.

2 Me gusta

Sí, ¡genial, gracias Michael!

Estaba en medio de responder con algo similar:


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
3 Me gusta

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?

¿Ya has logrado resolverlo?

Sí, tenemos a alguien trabajando en una solución.

3 Me gusta

La solución para este problema ya está disponible:

3 Me gusta

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.

1 me gusta

Esta corrección debería funcionar. En este caso, no se creará una miniatura de video para el video, pero esta vez no impedirá que se cargue.

3 Me gusta

Gracias, pude subirlo con éxito con Firefox. ¡Agradezco mucho la rápida respuesta y el seguimiento!

2 Me gusta

Este tema se cerró automáticamente 3 días después de la última respuesta. Ya no se permiten nuevas respuestas.