[stable]["solucionado"] ffmpeg falla al transcodificar vídeo con libaom-av1

¡Buenas!

ffmpeg falla al transcodificar vídeo mediante libaom-av1. Desconozco si os encargáis vosotros de transmitir el error a los desarrolladores o si me corresponde a mí hacerlo.

Las cadenas utilizadas para la transcodificación son las siguientes:

ffmpeg -nostdin -i ../video_1.mkv -map 0:v:0 -pix_fmt yuv420p10le -colorspace bt709 -color_primaries bt709 -color_trc bt709 -b:v 1500k -minrate:v 750k -maxrate:v 2175k -tile-columns 1 -tile-rows 1 -row-mt 1 -threads 4 -frame-parallel 1 -g 250 -auto-alt-ref 1 -lag-in-frames 48 -cpu-used 4 -tune ssim -aq-mode 1 -crf 32 -denoise-noise-level 5 -aom-params "sb-size=64:enable-dnl-denoising=0:enable-qm=1" -passlogfile AOM_GR05_CQ32_1500_C4_1 -pass 1 -c:v libaom-av1 -f null -y /dev/null &&\
ffmpeg -nostdin -i ../video_1.mkv -map 0:v:0 -pix_fmt yuv420p10le -colorspace bt709 -color_primaries bt709 -color_trc bt709 -b:v 1500k -minrate:v 750k -maxrate:v 2175k -tile-columns 1 -tile-rows 1 -row-mt 1 -threads 4 -frame-parallel 1 -g 250 -auto-alt-ref 1 -lag-in-frames 48 -cpu-used 4 -tune ssim -aq-mode 1 -crf 32 -denoise-noise-level 5 -aom-params "sb-size=64:enable-dnl-denoising=0:enable-qm=1" -passlogfile AOM_GR05_CQ32_1500_C4_1 -pass 2 -c:v libaom-av1 -map 0:a:0 -c:a copy -y video-AOM_GR05_CQ32_1500_C4_1.mkv

Donde …/video_1.mkv hace referencia al siguiente archivo (un segmento de una prueba de grabación de un juego realizada mediante OBS, hasta donde se, todo legal):

Al parecer no puedo incluir el enlace al archivo. Lo dejo con espacios alrededor de los símbolos especiales
https :// mega.nz /file/mQEQlAJA#FhNDbmnvGHHHR9h41agLoHiS3XTqtbm0A5qXEIIRee8

Y éste el mensaje de error que da ffmpeg:

ffmpeg: /usr/src/debug/aom/libaom-3.7.0/aom_dsp/flow_estimation/x86/disflow_sse4.c:31: get_cubic_kernel_dbl: Assertion `0 <= x && x < 1' failed.
convertir_AOM_1.sh: línea 2: 33693 Abortado                (`core' generado) ffmpeg -nostdin -i ../video_1.mkv -map 0:v:0 -pix_fmt yuv420p10le -colorspace bt709 -color_primaries bt709 -color_trc bt709 -b:v 1500k -minrate:v 750k -maxrate:v 2175k -tile-columns 1 -tile-rows 1 -row-mt 1 -threads 4 -frame-parallel 1 -g 250 -auto-alt-ref 1 -lag-in-frames 48 -cpu-used 4 -tune ssim -aq-mode 1 -crf 32 -denoise-noise-level 5 -aom-params "sb-size=64:enable-dnl-denoising=0:enable-qm=1" -passlogfile AOM_GR05_CQ32_1500_C4_1 -pass 2 -c:v libaom-av1 -map 0:a:0 -c:a copy -y video-AOM_GR05_CQ32_1500_C4_1.mkv

Si fuese yo quien tuviese que ponerse en contacto con los desarrolladores agradecería que me dijeseis qué información suele ser útil, dónde puedo encontrarla y cual es la forma oficial para hacerlo.

¡Un saludo!


La versión actual, 6.0-13 continua fallando en la misma función.


==========
"SOLUCIÓN"
==========

Al final he conseguido descargar la última versión de ffmpeg y ha resultado que está libre de problemas, al menos para mi sistema y para mi hardware.

Dejo los pasos a seguir, como solución temporal hasta que el paquete de Manjaro se actualice, por si alguien se encuentra en la misma situación que yo:

  1. En la seccion descargas del sitio oficial de ffmpeg, en la parte inferior de Compilaciones estáticas para Linux, hay un enlace a una web exterior al propio sitio con compilaciones realizadas por un tal John Van Sickle.

  2. En la parte inferior hay enlaces de descarga para la última versión disponible y la última estable. En la columna de la izquierda están los enlaces para obtener la última versión posible. Escoged la que corresponda a vuesta arquitectura. Por si alguien no conoce ya el dato amd64 es lo mismo que x86_64

  3. Ahora tendréis un archivo .tar.xz en vuestro sistema. Para extraer los datos, si vuestro gestor de archivos no lo reconoce, tenéis que ejecutar tar -xvf el_archivo_que_hayáis_descargado.tar.xz y en el mismo directorio se habrá creado una carpeta/directorio con el contenido del archivo .tar.xz

  4. En el nuevo directorio estará la última compilación disponible de ffmpeg. Para invocarla tendréis que hacerlo mediante la ruta completa al ejecutable. Por ejemplo si el ejecutable se encuentra en ~/Descargas/ffmpeg-git-20231031-amd64-static/ tendréis que invocarlo así /home/vuestro_usuario/Descargas/ffmpeg-git-20231031-amd64-static/ffmpeg bla_bla_bla -i entrada bla_bla_bla salida.extension

  5. Como último paso y por comodidad podéis añadir el contenido del nuevo directorio a una de las rutas que se encuentren en vuestro $PATH. En mi caso la primera ruta en la que busca ejecutbles es /home/mi_usuario/.local/bin así que lo he copiado todo ahí: cp -r ~/Descargas/ffmpeg-git-20231031-amd64-static/* /home/mi_usuario/.local/bin (Si /home/vuestro_usuario/.local/bin no existe, lo creáis: mkdir ~/.local/bin)

  6. Ahora al ejecutar ffmpeg lo_que_sea como el primer directorio en el que busca los ejecutables es el del paso anterior, estaréis invocando la versión recien descargada de ffmpeg en vez de la del sistema.

¿Te da el fallo desde el principio? Porque de los dos comandos, el primero terminó sin problemas y el segundo lleva ya unos minutos y no me ha dado errores. Pero va MUY lento, así que va a tardar al menos un par de horas, diría.

En todo caso, si quieres reportar un error, y por lo que veo en su página web, aquí tienes las instrucciones: Bug Reports (en inglés)

Perdón, tienes razón. Me ha faltado dar ese dato. La conversión es lenta, tremendamente lenta, si mal no recuerdo, en mi hardware, pasado un rato, se suele estabilizar entre 0’04x y 0’05x, me di cuenta del error a la media hora de haber empezado a procesar el vídeo.

He dejado el vídeo completo porque estos errores son raros, y a veces segmentando el vídeo en otros puntos no aparecen y el error suele pasar desapercibido. Es evidente que hay una variable que toma un valor no previsto (0 <= x && x < 1’ failed) en la línea 31 del archivo fuente disflow_sse4.c en lo que supongo que es la función get_cubic_kernel_dbl. Que es lo que deduzco del mensaje de error.

No es la primera vez que me sucede con esta versión de ffmpeg+libaom-av1 en Manjaro. Me ha sucedido por lo menos con otros dos archivos (que acabé eliminando). Como se dice, a la tercera va la vencida. Y esta es la única muestra de que dispongo.


Qué despiste llevo, acabo de darme cuenta de que habías dejado un enlace a la web del proyecto original. ¡Gracias!


Madre mía qué cosa más horrible, entre exigencias de utilización de servicios concretos, tamaños de archivo, regístrate ahora en un sitio nuevo, aprende a usar git, a compilar el proyecto, a usar gdb y valgrind para desensamblar el programa y recopilar datos sobre la ejecución… mejor que las cosas se queden como están y ya informará otro si es que alguien lo hace.

¡Muchas gracias por todo y perdón por las molestias!

Por comentarte que en mi equipo la conversión se hizo completamente. No estoy seguro de cuanto tardó, porque me tuve que ir y lo dejé haciendo. Pero no dio error y el video generado está completo

Pues… entonces es evidente que el error está en mi sistema. Cuando me has preguntado cuánto había que esperar para que saltase el error lo he vuelto a poner y me ha vuelto fallar.

Y ahora he eliminado ffmpeg y lo he vuelto a instalar y vuelve a fallar. Mañana reinstalaré otra vez el sistema entero. Y a ver si con todo virgen funciona.

¡Muchas gracias por tu tiempo y por tu paciencia!


Pues no ha habido suerte. Ni siquiera con el sistema recién instalado ha funcionado, sigue fallando en el mismo punto. Ni desde un terminal antes de acceder al escritorio, ni con wayland, ni con xorg, ni con el último kernel, ni con el kernel estable. Todo falla.

A lo mejor es cosa de hardware. Por si a alguien le interesa hacer pruebas y comparar dejo los datos, yo ya desisto.

CPU: Ryzen 7 3700X
Placa base: Gigabyte B550m Aorus elite 1.0 (sistema completamente actualizado a la versión F18c)

La codificación se supone que se está haciendo por procesador, no estoy utilizando ningún parámetro para que el proceso se haga mediante la gráfica, pero por si las moscas, mi procesador gráfico es el RX 6600.

De nuevo, muchas gracias por todo.

Parece que la actualización de hoy a ffmpeg 2:6.1-1 soluciona el problema.

This topic was automatically closed 36 hours after the last reply. New replies are no longer allowed.