Saltar al contenido

¿Cómo puedo extraer una imagen JPEG de buena calidad de un archivo de video con ffmpeg?

Solución:

Usar -qscale:v para controlar la calidad

Usar -qscale:v (o el alias -q:v) como una opción de salida.

  • El rango normal para JPEG es 2-31, siendo 31 la peor calidad.
  • La escala es lineal con el doble de qscale siendo aproximadamente la mitad de la tasa de bits.
  • Recomendamos probar valores de 2-5.
  • Puede usar un valor de 1 pero debe agregar el -qmin 1 opción de salida (porque el valor predeterminado es -qmin 2).

Para generar una serie de imágenes:

ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg

Consulte la documentación del muxer de imágenes para obtener más opciones que involucran salidas de imagen.

Para generar una sola imagen con una duración de ~ 60 segundos:

ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg

Ver también

  • Preguntas frecuentes de FFmpeg: ¿Cómo codifico películas en imágenes individuales?
  • Wiki de FFmpeg: crea una imagen en miniatura cada X segundos del video

Imprima las imágenes en un formato sin pérdidas como PNG:

ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_%03d.png

Editar / Actualizar: No estoy muy seguro de por qué originalmente di un ejemplo de nombre de archivo extraño (con una extensión posiblemente inventada).

Desde entonces he descubierto que -vsync 0 es más simple que -r 10 porque evita la necesidad de conocer la velocidad de fotogramas.

Esto es algo parecido a lo que uso actualmente:

mkdir stills
ffmpeg -i my-film.mp4 -vsync 0 -f image2 stills/my-film-%06d.png

Para extraer solo los fotogramas clave (que probablemente sean de mayor calidad después de la edición):

ffmpeg -skip_frame nokey -i my-film.mp4 -vsync 0 -f image2 stills/my-film-%06d.png

Luego use otro programa (donde puede especificar con mayor precisión la calidad, el submuestreo y el método DCT, por ejemplo, GIMP) para convertir los PNG que desea a JPEG.

Es posible obtener imágenes ligeramente más nítidas en formato JPEG de esta manera de lo que es posible con -qmin 1 -q:v 1 y la salida como JPEG directamente desde ffmpeg.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *