This website is released under |
Trasformazioni complesse: LUT e split screenA Gianandrea S., Claudio S. e Mirco S.
Visualizzare la rappresentazione dei colori R′G′B′ (RGR)
# L'opzione
# -filter_complex
# permette di concatenare vari ordini, da applicare individualmente a una parte
# soltanto dei dati trasmessi in entrata.
#
# In questo esempio, mediante il filtro "split", si copia quattro volte la
# stessa entrata in quattro settori.
#
# Si possono anche inviare parametri relativi al filtro "pad":
# iw larghezza dell'immagine d'entrata (= input width)
# ih altezza dell'immagine d'entrata (= input height)
# w larghezza dell'immagine che sta usando (= width)
# h altezza dell'immagine che sta usando (= height)
#
# Il filtro "lutrgb" accetta valori RGB.
#
# Il filtro "overlay" permette di sovrapporre elementi.
ffmpeg \
-f lavfi \
-i testsrc \
-t 12 \
-filter_complex \
"split=4[a][b][c][d]; \
[a]pad=iw*4:ih[w]; \
[b]lutrgb=g=0:b=0[x]; \
[c]lutrgb=r=0:b=0[y]; \
[d]lutrgb=r=0:g=0[z]; \
[w][x]overlay=w:0[wx]; \
[wx][y]overlay=w*2:0[wxy]; \
[wxy][z]overlay=w*3:0" \
RGB.mov
Visualizzare la rappresentazione dei colori Y′CBCR (YUV)
# Il filtro "lutyuv" accetta valori YUV.
ffmpeg \
-f lavfi \
-i testsrc \
-t 12 \
-filter_complex \
"split=4[a][b][c][d]; \
[a]pad=iw*4:ih[w]; \
[b]lutyuv=u=128:v=128[x]; \
[c]lutyuv=y=0:v=128[y]; \
[d]lutyuv=y=0:u=128[z]; \
[w][x]overlay=w:0[wx]; \
[wx][y]overlay=w*2:0[wxy]; \
[wxy][z]overlay=w*3:0" \
YUV.mov
Esercizi
Intermezzo: Generare un file di lavoro supplementare
# Tanto per cambiare, qui ho usato
# -preset veryfast
ffmpeg \
-i mandelbrot.mov \
-c:v libx264 \
-preset veryfast \
-qp 50 \
-pix_fmt yuv420p \
-an \
mandelbrot_50.mov
Visualizzare la differenza tra due file («delta file»)
# Il filtro "format" impone il formato. Qui "yuva444p" che significa 4:4:4 YUV
# planar con canale alpha.
#
# Il filtro "lut" accetta sia valori RGB sia valori YUV.
#
# Parametri (tra vari altri):
# c0 fissa la prima componente, cioè R rispettivamente Y
# c1 fissa la seconda component, cioè G rispettivamente U
# c2 fissa la terza componente, cioè B rispettivamente V
# c3 fissa la quarta componente, cioè il canale alpha
#
# In questo esempio ci sono, ovviamente, in entrata due file differenti.
ffmpeg \
-i mandelbrot.mov \
-i mandelbrot_50.mov \
-filter_complex \
"[1]format=yuva444p, \
lut=c3=128, \
negate[1_con_canale_alpha]; \
[0][1_con_canale_alpha]overlay" \
delta.mov
Usare lo split screen per confrontare due file
# Anche in questo esempio ci sono, ovviamente, in entrata due file differenti.
ffmpeg \
-i mandelbrot.mov \
-i mandelbrot_50.mov \
-filter_complex \
"[0]crop=iw/2:ih:0:0[prov]; \
[1]crop=iw/2:ih:iw/2:0[destra]; \
[prov]pad=iw*2:ih*1[sinistra]; \
[sinistra][destra]overlay=w" \
split.mov
Esercizi
Visualizzare la crominanza ridotta di 4:2:0 Y′CBCRffmpeg \
-f lavfi \
-i mandelbrot \
-t 60 \
-filter_complex \
"split=3[1][2][3]; \
[1]pad=iw*3/2:ih, \
lutyuv=u=128:v=128[sinistra]; \
[2]pad=iw:ih*2, \
lutyuv=y=0:v=128, \
scale=iw/2:ih/2[alto]; \
[3]lutyuv=y=0:u=128, \
scale=iw/2:ih/2[basso]; \
[alto][basso]overlay=0:h[destra]; \
[sinistra][destra]overlay=w*2:0" \
YUV420.mov
Esercizio
2015-01-01 |