Aqui estão os detalhes sobre o que as predefinições fazem:
[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 predefinição, cada x/y
par mapeia a entrada x
para a saída y
, onde está o intervalo 0-1
. Se não estiver definido, o filtro definirá automaticamente 0/0
e, por exemplo, 1/1
entrada preta = saída preta e entrada branca = saída branca. Considerando 0/1
que significaria definir pixels pretos de entrada como brancos na saída. Onde você tem vários pares de aspas, separados por vírgulas, a sequência é "R","G","B"
mapeada. A interpolação entre os pontos é spline cúbico natural .
Para o nivelamento automático, um método bruto seria usar o autolevels
subfiltro do pp
filtro.
ffmpeg -i input.mp4 -vf pp=al output.mp4
O que isso faz é aumentar a luminância para toda a gama.
Para verificar os níveis antes (e depois) de qualquer ajuste que você fizer, você pode gerar um desfile RGB para um quadro como esse
ffmpeg -i input.mp4 -vf "format=rgb24,waveform=c=7:d=parade,scale=1200x512" -vframes 1 frame1parade.png
Para um quadro específico, use
ffmpeg -ss 12.4 -i input.mp4 -vf "format=rgb24,waveform=c=7:d=parade,scale=1200x512" -vframes 1 frameNparade.png