2011-05-21 16 views
44

estoy tratando de extraer una parte de un vídeo en un gif animado con el siguiente comando:¿Cómo generar gif desde avi usando ffmpeg?

ffmpeg -i video.avi -t 5 out.gif 

Se genera un gif animado pero la calidad es una locura. Sin embargo, cuando genero imagen gif usando:

ffmpeg -i video.avi -t 10 out%d.gif

Genera una calidad aceptable de imágenes gif. ¿Cómo puedo generar un gif animado usando el primer comando pero la misma calidad que el segundo comando?

+2

Esto podría ser útil http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html –

Respuesta

0

No he creado un GIF animado anteriormente, pero puede intentar usar el parámetro de velocidad de bits para especificar la calidad, a pesar de ser una imagen (y presumiblemente no tener ninguna velocidad). La calidad de la miniatura responde al parámetro -b. Si por insano, te refieres a "increíblemente malo", puedes especificar una tasa de bitrate y una tolerancia a la velocidad de bits muy altas (no estoy seguro de si estás usando la fuente vbr o cbr). (O hacer lo contrario si usted quiere decir que es demasiado bueno y desea limitar el tamaño)

'-b', '10000000','-bt', '20000000'

Como alternativa, también se puede cambiar las dimensiones utilizando el parámetro -s, que tendrá una representación aspecto normal de la dimensiones como "1920X1200".

que realmente depende de la tasa de bits y la compresión del material de origen y lo que espera el gif será. Tal vez considere proporcionar más información que "insano", pero me imagino que esto le dará un buen comienzo en ambos sentidos. Buena suerte

+2

Gracias por su respuesta. Sin embargo, descubrí que ffmpeg no es realmente bueno en el manejo de imágenes gif, así que lo usé para extraer imágenes, pero luego uso imagemagick para generar el gif. – Marconi

+0

No estoy seguro de por qué estoy recibiendo muchos votos abajo aquí. Decía que no había hecho gifs animados. Estaba tratando de señalar a la persona con la pregunta a otros parámetros relevantes. El antiguo proyecto FFMPEG parecía encantado de haber ocultado muchos de sus parámetros fuera de los documentos. ¿Tal vez estoy siendo criticado por revelar sus terribles y oscuros secretos? – Profane

61

Tuve un problema similar al tratar de generar gif animados de alta calidad a partir de una serie de imágenes extraídas de una película.

Por alguna razón, el gif animado generado con ffmpeg solo contiene 103 colores que se pueden usar con una paleta de colores del sistema de 256 niveles fijos que resulta en resultados horribles. Mi solución fue lugar

ffmpeg -i video.avi -t 10 out%02d.gif 

continuación

gifsicle --delay=10 --loop *.gif > anim.gif 

calidad es entonces bastante bueno. Puede encontrar el artículo here

Editar: Se ha actualizado la publicación para reflejar las sugerencias de Alex Kahn.

+7

¡Gracias! Un accesorio: use out% 02d.gif. Esto almohadilla el número en el nombre de archivo para que estén en orden alfabético correcto. De lo contrario, el orden termina siendo 1,10,11,12,13,14,15,16,17,18,19,2,20,21,22,23 ... lo que le da al gif resultante un extraño efecto de omisión. –

+2

También puede tener PNG de salida 'ffmpeg' en lugar de GIF para evitar la calidad de mierda. Fwiw, aquí hay un buen reportaje sobre la creación de GIFS en Bash: http://blog.room208.org/post/48793543478 –

+1

Esto funciona muy bien. Una cosa que también podría querer hacer es omitir marcos: usando 'seq -f% 02g.gif start skip stop' en lugar de '* .gif' en el comando gifsicle, puede omitir cuadros' skip', comenzando en 'start' y terminando en cuadros' stop'. Bastante útil. Ej: gifsicle --delay = 10 --loop 'ss-f% 02g.gif 1 3 156'> anim.gif empieza en el fotograma 1, saltar 3 fotogramas y parar en el marco 156. – funkaster

Cuestiones relacionadas