Cómo forzar a ffmpeg para que inserte el fotograma clave en el primer fotograma al reducir la velocidad de fotogramas de un video con x264 vcodec

7

Tengo un video mpeg4 a 25 fps. Este video contiene solo un marco estático. Estoy tratando de reducir la velocidad de cuadros a 1 fps y convertir el video a x246 (mp4).

Ejecuté el siguiente comando ffmpeg:

ffmpeg -i vid.avi -acodec aac -ar 32000 -ab 64k -ac 2 \
-vcodec libx264 -strict -2 -y -r 1 -force_key_frames 0 vid.mp4

FFmpeg luego suelta muchos cuadros hasta que inserta el primer fotograma clave. A veces la imagen aparece solo después de 16 o 20 segundos.

Supongo que ffmpeg no inserta un fotograma clave al principio.

¿Alguien sabe cómo podría tomar el primer fotograma de vid.avi y usarlo como fotograma clave para vid.mp4?

bodacydo
fuente
lo has intentado sin -force_key_frames 0? También podría intentar cambiar el 0 a 1 para que comience en el primer fotograma-force_key_frames 1
Travis Crum,
sí, lo intenté sin -force_key_frames 0 y con -force_key_frames 1, pero eso no ayudó. Estoy bastante atascado.
bodacydo
¿se requiere exactamente de esta manera? Voy a adivinar y asumir lo siguiente: el audio es el foco del video. La imagen no es una gran preocupación. Entonces, ¿no podría extraer un mp3 del video (calidad sin pérdidas, por supuesto) y luego, adquirir la imagen, tal vez incluso una captura de pantalla si está tan desesperado, luego crear un nuevo video en ffmpeg usando el mp3 extraído y la imagen con el fps establecido en 1?
Travis Crum
1
La sintaxis force_key_frames para usar el número de fotograma es-force_key_frames "expr:eq(n,0)"
robado el
Estoy bastante seguro de que el problema raíz aquí era otra cosa. Los codificadores siempre comienzan con un fotograma clave.
Gyan

Respuestas:

6

Para forzar un fotograma clave en el código de tiempo 00: 00: 00.000, debe intentar usar el siguiente indicador:

-force_key_frames 00:00:00.000
Máxima
fuente
¿Qué hace esto exactamente?
Guerrero Bob
forzará la posición del fotograma clave a las 00: 00: 00,000 código de tiempo, que se solicitó con la solicitud original.
Maxim
¿Podría por favor explicar: esto es aplicable solo a x264, o cualquier códec? ¿A qué se refiere el tiempo, el tiempo del archivo de salida? Es decir, para las superposiciones, ¿cómo podría poner un fotograma clave al comienzo de cualquier video superpuesto? Gracias
Ondra Žižka