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.
u han intentado otras opciones pix_fmt? –
@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
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