Comando
ffmpeg -i entrada.gif -filter_complex \
"[0:v]split=5[s1][s2][s3][s4][s5]; \
[s1]crop=iw/5:ih:0:0,split[s1a][s1b];[s1a]palettegen[p1];[s1b][p1]paletteuse[v1]; \
[s2]crop=iw/5:ih:iw/5:0,split[s2a][s2b];[s2a]palettegen[p2];[s2b][p2]paletteuse[v2]; \
[s3]crop=iw/5:ih:2*iw/5:0,split[s3a][s3b];[s3a]palettegen[p3];[s3b][p3]paletteuse[v3]; \
[s4]crop=iw/5:ih:3*iw/5:0,split[s4a][s4b];[s4a]palettegen[p4];[s4b][p4]paletteuse[v4]; \
[s5]crop=iw/5:ih:4*iw/5:0,split[s5a][s5b];[s5a]palettegen[p5];[s5b][p5]paletteuse[v5]" \
-map "[v1]" p1.gif -map "[v2]" p2.gif -map "[v3]" p3.gif -map "[v4]" p4.gif -map "[v5]" p5.gifExplicación del comando
1. Entrada e inicialización del filtro
ffmpeg -i entrada.gif: Invoca el binario y define el archivo de entrada.-filter_complex: Habilita el uso de un grafo de filtros avanzados, necesario cuando hay múltiples entradas, múltiples salidas o ramificaciones no lineales en el procesamiento.
2. Ramificación principal
"[0:v]split=5[s1][s2][s3][s4][s5];"[0:v]: Selecciona la primera pista de video (v) del primer archivo de entrada (índice0).split=5: Duplica la pista original en 5 copias idénticas en memoria.[s1]...[s5]: Asigna una etiqueta identificatoria a cada copia para referenciarlas en las siguientes etapas. El punto y coma (;) indica el fin de esta cadena de filtros.
3. Lógica de recorte y corrección de color (Por segmento)
El comando procesa cada una de las 5 partes mediante la misma secuencia lógica. Tomando como ejemplo la primera línea de procesamiento:
[s1]crop=iw/5:ih:0:0,split[s1a][s1b];[s1a]palettegen[p1];[s1b][p1]paletteuse[v1];
Esta línea se divide en tres operaciones:
- Recorte y sub-ramificación:
[s1]crop=iw/5:ih:0:0: Toma el primer flujo duplicado ([s1]). Corta el ancho a una quinta parte del ancho original (iw/5- input width), mantiene la altura original (ih- input height), y establece las coordenadas de origen (esquina superior izquierda).,split[s1a][s1b]: Inmediatamente después del recorte, esta sección se divide en dos nuevos flujos idénticos ([s1a]y[s1b]).
- Generación de la paleta:
[s1a]palettegen[p1]: Analiza todos los cuadros del flujo[s1a]para calcular una paleta óptima de 256 colores específica para ese recorte. La salida (solo los datos de la paleta) se etiqueta como[p1].
- Aplicación de la paleta:
[s1b][p1]paletteuse[v1]: Toma el flujo de video recortado ([s1b]) y los datos de la paleta ([p1]), y los combina. Asigna los colores correctos a los píxeles, eliminando las transparencias erróneas y los artefactos visuales. El resultado final, listo para exportar, se etiqueta como[v1].
4. Desplazamiento de coordenadas
Las siguientes cuatro líneas replican la lógica anterior para [s2], [s3], [s4] y [s5], pero modifican la coordenada en el filtro crop para avanzar secuencialmente a lo ancho de la imagen:
- Tramo 2:
iw/5:0(Desplaza el inicio un 20% a la derecha). - Tramo 3:
2*iw/5:0(Desplaza el inicio un 40%). - Tramo 4:
3*iw/5:0(Desplaza el inicio un 60%). - Tramo 5:
4*iw/5:0(Desplaza el inicio un 80%).
5. Asignación de flujos a archivos físicos
-map "[v1]" p1.gif: La bandera-mapextrae un flujo específico del grafo interno de FFmpeg y lo dirige hacia un archivo de salida. Aquí extrae[v1]y lo compila enp1.gif.- Esto se repite con
-map "[v2]" p2.gif, etc., generando de forma concurrente los 5 archivos independientes.