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
Puede simplificar este uso -skip_framesin la necesidad de un selectfiltro 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 uncropdetectgrá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 1es 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 h264illegal short term buffer state detected.Ejemplo usando los filtros
selectyscale:Algunos consejos:
Los filtros no deben aparecer antes de la
-iopción, ya que son una opción de salida. No sé de dónde sacaste exactamente el comando, peroPICT_TYPE_Ino existe, debería serI.En el
scalefiltro puede reemplazar73o41hacer que el filtro calcule automáticamente el ancho o la altura para preservar la relación de aspecto: comoscale=73:-1oscale=-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
ffmpegpermite 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.fuente
ffmpeg -i 2.flv -vf "select=eq(pict_type\,I)" -vsync vfr frame-%02d.pngsi 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:
== --------------------------------------------
Parámetros "-i" por adelantado
fuente