2012-09-24 65 views
6

he creado un archivo GIF usando ffmpeg con el siguiente comando:GIF creado a partir de un archivo de película con ffmpeg es muy grande en tamaño

ffmpeg -i foo.mp4 -ss 00:00:18 -t 00:00:06 -pix_fmt rgb24 bar.gif

Sin embargo, el bar.gif resultante fue de más de 300 MB de tamaño, mientras que la película ¡El archivo foo.mp4 tenía alrededor de 15 MB!

¿Qué ofrece?

+1

u han intentado otras opciones pix_fmt? –

+0

@RyanErickson Según la [documentación] (http://ffmpeg.org/ffmpeg.html), no encontré ninguna opción útil. Obv estoy pasando por alto algo que crees. ¿Qué opción recomendarías? Todo lo que vi fue usar '-window_size', pero eso no acabó de hacer el trabajo – drN

+0

All: Por favor, lea la transcripción del chat por @thirdender, (s) proporcionó un [link] muy útil (http: //www.alecjacobson .com/weblog /? p = 2102) allí. – drN

Respuesta

4

Una respuesta completa a esta pregunta es difícil :-p En pocas palabras, se trata de cómo se realiza la compresión en cada formato.

En las animaciones GIF, cada fotograma es conceptualmente una imagen GIF separada. Todas las imágenes GIF se almacenan en un archivo GIF grande, con instrucciones para reproducir los fotogramas con un cierto retraso entre los fotogramas. Para optimizar los marcos, puede ejecutar el GIF a través de un programa que puede eliminar información duplicada de un cuadro al siguiente (el filtro "Optimización de Animación" de GIMP es una buena manera de hacerlo: GIMP – Simple Animations).

Por otro lado, los formatos de video como MP4 tienen un enfoque diferente. Suponen que los marcos van a ser similares, y solo almacenan la diferencia entre dos cuadros. Además, la cantidad de datos para cada fotograma está limitada a la velocidad de bits de video especificada dada cuando comienza la compresión. La compresión con pérdida se realiza para bajar el archivo de video al bitrate deseado. Para optimizar aún más el archivo de video, la mayoría de los transcodificadores de video incluyen opciones para "codificación de dos pasos". Esto se ejecuta dos veces en el video: la primera vez que recopila información sobre qué partes del archivo son más complejas y, luego, la segunda vez que comprime cada parte no compleja del video de forma más agresiva.

Existen muchas otras optimizaciones como parte del proceso de codificación de video que simplemente faltan en el formato de archivo GIF. Además, vale la pena señalar que una animación GIF se limitará a una paleta de 256 colores, lo que puede dar lugar a una imagen difuminada. MP4 usa algo más similar a una compresión JPEG para los marcos de video (aunque con optimizaciones adicionales dirigidas específicamente al video ... el antiguo formato MJPEG era básicamente solo montones de imágenes JPEG, al igual que las animaciones GIF son montones de imágenes GIF).

Si puede proporcionar más información sobre su caso de uso específico, podemos ayudarlo a encontrar una solución mejor.

+0

¿Qué tipo de información sería necesaria sobre mi caso de uso? ¡Gracias! – drN

+0

¿Piensas utilizar el GIF para un sitio web?Si es así, ¿has considerado la etiqueta 'VIDEO' en su lugar? – thirdender

+0

Sí, es para una página web. La etiqueta 'VIDEO' dices ....? Lo miraré. – drN

2

estoy de acuerdo con usted, el uso de este comando no es óptima:

avconv -i input.mp4 -pix_fmt rgb24 output.gif 

uso de Gimp como siguiente después de esta conversión:

enter image description here

+0

Luego tiene que elegir Archivo> Exportar como ..., elija el formato GIF, haga clic en exportar, marque "Como animación" y especifique el retraso de fotograma apropiado (que puede obtener de los nombres de las capas en la ventana Capas). –

Cuestiones relacionadas