2011-03-09 61 views

Respuesta

15

Esta no es una solución completa, pero le indicará el camino correcto.

Utilice ffprobe -show_streams IN.AVI para obtener el número de fotogramas en la entrada de video. Entonces

ffmpeg -i IN.AVI -vf "select='eq(n,LAST_FRAME_INDEX)'" -vframes 1 LAST_FRAME.PNG 

donde LAST_FRAME_INDEX es el número de fotogramas menos uno (marcos son indexados cero), es la salida de la última trama.

+0

Gracias. Realmente me ayudó a salir. Copié tus comandos sin ningún cambio. –

+3

Hice una secuencia de comandos de shell de estas instrucciones. https://gist.github.com/NelsonMinar/b00693feecc3b6673e36 – Nelson

+0

¿No va a decodificar todos los marcos, mientras que la búsqueda podría ser capaz de utilizar fotogramas clave para omitir un montón del video? – Guig

1

Una cosa que no he visto mencionar es que el recuento de cuadros esperado puede estar desactivado si el archivo contiene engaños. Si su método de contar marcos está causando que su comando de extracción de imágenes vuelva a estar vacío, esto podría ser lo que está arruinándolo.

He desarrollado una secuencia de comandos corta para solucionar este problema. Está publicado here.

2

No pude obtener la solución de Nelson para funcionar. Esto funcionó para mí. https://gist.github.com/samelie/32ecbdd99e07b9d8806f

EDITAR (por si acaso el enlace desaparece, aquí está el shellscript-bobbogo):

#!/bin/bash 

fn="$1" 
of=`echo $1 | sed s/mp4/jpg/` 

lf=`ffprobe -show_streams "$fn" 2> /dev/null | grep nb_frames | head -1 | cut -d \= -f 2` 
rm -f "$of" 
let "lf = $lf - 1" 
ffmpeg -i $fn -vf select=\'eq\(n,$lf\) -vframes 1 $of 
Cuestiones relacionadas