Estoy tratando de extraer fotogramas clave de un videoclip. Intenté el siguiente comando, pero extrae todos los cuadros.
ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg
Estoy tratando de extraer fotogramas clave de un videoclip. Intenté el siguiente comando, pero extrae todos los cuadros.
ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg
Respuestas:
Puede simplificar este uso -skip_frame
sin la necesidad de un select
filtro de video:
ffmpeg -skip_frame nokey -i 2.flv -vsync 0 -r 30 -f image2 thumbnails-%02d.jpeg
-threads 1
, en comparación con el valor predeterminado -threads auto
, hace que un cropdetect
gráfico de filtro ( ffmpeg -threads 1 -skip_frame nokey -i input.mkv -filter:v select='not(mod(n\,20))',cropdetect -an -f null /dev/null
) sea 2 veces más rápido en mi sistema (de 60 a 30 segundos)!
-threads 1
es que, de lo contrario, la secuencia de los fotogramas clave de salida puede emitirse fuera de orden. Si tiene algún tipo de forma post-hoc de tratar este problema, puede conservar múltiples subprocesos. Además, parece que todavía es posible obtener fotogramas clave fuera de orden, incluso cuando se usa -threads 1
, pero ahora en este caso, todas estas ocurrencias parecen estar acompañadas / marcadas por un error de decodificador h264 illegal short term buffer state detected
.
Ejemplo usando los filtros select
y scale
:
ffmpeg -i 2.flv -vf "select=eq(pict_type\,I),scale=73x41" \
-vsync vfr -qscale:v 2 thumbnails-%02d.jpeg
Algunos consejos:
Los filtros no deben aparecer antes de la -i
opción, ya que son una opción de salida. No sé de dónde sacaste exactamente el comando, pero PICT_TYPE_I
no existe, debería ser I
.
En el scale
filtro puede reemplazar 73
o 41
hacer que el filtro calcule automáticamente el ancho o la altura para preservar la relación de aspecto: como scale=73:-1
o scale=-1:41
. Esto evita el estiramiento o el aplastamiento que puede resultar de una escala "forzada".
La calidad de salida se puede controlar con -qscale:v
(o el alias -q:v
). El rango efectivo es una escala lineal de 2 a 31 y un valor más bajo es una calidad más alta.
Que ffmpeg
permite un filtro antes de que la entrada me diga que podría estar desactualizado. Descargue una compilación estática reciente para su sistema operativo, o compílelo usted mismo de acuerdo con las guías de compilación si lo anterior no funciona.
ffmpeg -i 2.flv -vf "select=eq(pict_type\,I)" -vsync vfr frame-%02d.png
si esto errores:
La opción vf (configurar filtros de video) no se puede aplicar a la url de entrada 1508.mp4: está intentando aplicar una opción de entrada a un archivo de salida o viceversa. Mueva esta opción antes del archivo al que pertenece. Error al analizar opciones para el archivo de entrada 1508.mp4. Error al abrir archivos de entrada: argumento no válido
Puedes hacerlo:
ffmpeg -i 263.mp4 -vf select=eq(pict_type\,PICT_TYPE_I) -vsync 2 -s 480x320 -r 24 -f image2 thumbnails-%05d.jpeg
== --------------------------------------------
Parámetros "-i" por adelantado