2011-08-08 29 views
6

He estado usando FFmpeg para extraer cuadros individuales en una imagen. Aunque algunos googlear, resulta que en ejecución:FFmpeg -ss comportamiento extraño

ffmpeg.exe -i video.avi -ss 00:30:00 -y -an -vframes 1 test.png 

... corre significativamente más lento que el siguiente, que es casi idéntica, pero instantánea:

ffmpeg.exe -ss 00:30:00 -i video.avi -y -an -vframes 1 test.png 

La única diferencia es el orden de - yo y -ss. ¿Es esto una 'característica' intencional? ¿Hay algún tipo de razón técnica para la diferencia aquí?

Respuesta

6

Esta es una suposición educada. Cuando -ss ocurre antes de -i, se trata como instrucciones para la entrada, por lo que el primer fotograma de la secuencia de video es el de 30 segundos. Cuando se produce -ss después de -i, se trata como un efecto, y los primeros 30 segundos de fotogramas se leen y eliminan, lo que genera una diferencia de rendimiento.

6

La respuesta de wberry es realmente muy educada. La lectura de la documentación puede ayudar aún más:

posición -SS (entrada/salida) '

Cuando se usa como una opción de entrada (antes -i), busca en este archivo de entrada a la posición . Cuando se usa como una opción de salida (antes de un nombre de archivo de salida), decodifica pero descarta la entrada hasta que las marcas de tiempo lleguen a su posición. Esto es más lento, pero más preciso.

(posición puede ser o bien en segundos o en HH: mm: ss [.xxx] formulario.)

(como se encuentra en http://ffmpeg.org/ffmpeg.html#Main-options)

estoy escribiendo actualmente un aplicación de audio grabber, y, como tal, estoy usando el método más lento pero más preciso. Depende de usted elegir el mejor enfoque.

1

Cuando -ss ocurre antes de -i, va al fotograma clave más cercano (que es cada 10 segundos en archivos H.264 a 25 fps, ya que H.264 usará un GOP de 250). Esto hace que la búsqueda sea realmente rápida, por lo que puede agregar otro -ss después de -i para ir a una ubicación fraccional después del primer -ss.

Tener -ss después de -i buscará la ubicación exacta, pero es muy lento.

Ver https://trac.ffmpeg.org/wiki/Seeking de ejemplos y más información

1

también he acaba de terminar una aplicación que genera miniaturas de contenido de vídeo.

Usted debe comprobar esto, http://ffmpeg.org/trac/ffmpeg/wiki/Seeking%20with%20FFmpeg

Se describe un método de combinar la bandera -ss (de ambos lugares) en un comando unificado que proporciona el marco time exactitud, con una selección de fotogramas más rápido.

ffmpeg -ss 00:02:30 -i Underworld.Awakening.avi -ss 00:00:30 -vframes 1 out3.jpg

y también incluye enlaces a otros trucos posibles, al igual que varios pulgares de un solo vídeo.