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 |