Aquí están los detalles sobre lo que hacen los presets:
[PRESET_COLOR_NEGATIVE] = {
"0/1 0.129/1 0.466/0.498 0.725/0 1/0",
"0/1 0.109/1 0.301/0.498 0.517/0 1/0",
"0/1 0.098/1 0.235/0.498 0.423/0 1/0",
},
[PRESET_CROSS_PROCESS] = {
"0.25/0.156 0.501/0.501 0.686/0.745",
"0.25/0.188 0.38/0.501 0.745/0.815 1/0.815",
"0.231/0.094 0.709/0.874",
},
[PRESET_DARKER] = { .master = "0.5/0.4" },
[PRESET_INCREASE_CONTRAST] = { .master = "0.149/0.066 0.831/0.905 0.905/0.98" },
[PRESET_LIGHTER] = { .master = "0.4/0.5" },
[PRESET_LINEAR_CONTRAST] = { .master = "0.305/0.286 0.694/0.713" },
[PRESET_MEDIUM_CONTRAST] = { .master = "0.286/0.219 0.639/0.643" },
[PRESET_NEGATIVE] = { .master = "0/1 1/0" },
[PRESET_STRONG_CONTRAST] = { .master = "0.301/0.196 0.592/0.6 0.686/0.737" },
[PRESET_VINTAGE] = {
"0/0.11 0.42/0.51 1/0.95",
"0.50/0.48",
"0/0.22 0.49/0.44 1/0.8",
}
Para cada preset, cada x/y
par asigna la entrada x
a la salida y
, donde está el rango 0-1
. Si no se configura, el filtro se configura automáticamente 0/0
y, por 1/1
ejemplo, entrada negra = salida negra y entrada blanca = salida blanca. Mientras 0/1
que significaría establecer los píxeles negros de entrada en blanco en la salida. Cuando tiene varios pares entre comillas, separados por comas, la secuencia es el "R","G","B"
mapeo. La interpolación entre los puntos es una spline cúbica natural .
Para la nivelación automática, un método crudo sería usar el autolevels
subfiltro del pp
filtro.
ffmpeg -i input.mp4 -vf pp=al output.mp4
Lo que esto hace es estirar la luminancia a rango completo.
Para verificar los niveles antes (y después) de cualquier ajuste que realice, puede generar un desfile RGB para un cuadro como este
ffmpeg -i input.mp4 -vf "format=rgb24,waveform=c=7:d=parade,scale=1200x512" -vframes 1 frame1parade.png
Para un marco específico, use
ffmpeg -ss 12.4 -i input.mp4 -vf "format=rgb24,waveform=c=7:d=parade,scale=1200x512" -vframes 1 frameNparade.png