La salida FFMPEG está bloqueada

Estoy intentando extraer los fotogramas individuales de una transmisión de video AVC sin formato. Estoy haciendo esto a través del siguiente comando ffmpeg:ffmpeg -q 1 -i video_test.avc -f image2 frames/frames_%04d.jpg

El problema que encuentro es que los primeros fotogramas se ven bien. Incluyo un ejemplo a continuación.Ejemplo de buen marco

Los cuadros extraídos luego empeoran progresivamente y cuando llego al cuadro 17, están realmente bloqueados.Ejemplo de imagen en bloques

Obtienes el video en bruto de este enlace .

¿Hay alguna opción que me esté perdiendo? Me di cuenta de que FFMPEG en mi Mac funciona como se esperaba y genera buenos marcos, pero FFMPEG en mi servidor de producción que ejecuta Ubuntu presenta este problema.

¿Mejora cada vez que se alcanza un fotograma clave o continúa empeorando indefinidamente?
Una vez que llega al estado de bloques, permanece en ese estado de bloques indefinidamente. No empeora.
¿Ha probado diferentes versiones de FFMPEG para ver si es solo un error en la versión en particular? Lo siento, solo estoy lanzando pensamientos aleatorios de solución de problemas. No tengo conocimiento de nada específico de este problema.
Estoy usando los archivos binarios del repositorio que se encuentra en ffmpeg.org/download.html . Esto se actualiza con cierta frecuencia y la última actualización fue el 15 de julio. Intentaré construirlo desde la fuente mañana y veré si eso cambia algo.

Respuestas (1)

La colocación de opciones importa

¿Hay alguna opción que me esté perdiendo?

No, pero la colocación de opciones es importante. Las opciones antes de la entrada se aplican a la entrada y las opciones antes de la salida generalmente se aplican a la salida. La excepción son las opciones globales. Consulte la sinopsis de FFmpeg y la descripción de FFmpeg para obtener más detalles sobre la ubicación de las opciones.

Por lo tanto, debe mover su opción -q(alias para ):-qscale

ffmpeg -i video_test.avc -q:v 2 frames/frames_%04d.jpg
  • -f image2es superfluo aquí ya que ffmpeg sabe que sus salidas son imágenes.
  • Un rango sensato -q:vpara el codificador mjpeges 2-5; menor es mayor calidad.
  • Se recomienda ser explícito en cuanto a qué transmisión desea aplicar, -qya que ffmpeg no puede saber si debe aplicarse a video o audio, por lo que en su caso, use -q:v. Esta es una buena práctica, aunque no importa para su entrada ya que no tiene audio.

Un "ffmpeg" falso

Me di cuenta de que FFMPEG en mi Mac funciona como se esperaba y genera buenos marcos, pero FFMPEG en mi servidor de producción que ejecuta Ubuntu presenta este problema.

Ubuntu ya no usa FFmpeg:

Como no uso el tenedor, es posible que mi respuesta no funcione para usted.

Obtener ffmpeg

El desarrollo de FFmpeg es muy activo y siempre es una buena idea usar una versión reciente. Dos formas principales de conseguirlo son:

Fue la colocación de la -q 1que lo hizo. Gracias.