This website is released under |
Esempi d’utilizzo di ffmpeg e ffprobe# Le linee che iniziano con un simbolo diesis sono dei commenti. Le altre linee # possono essere copiate nel terminale/prompt. Se anche il rinvio alla prossima # linea viene copiato, allora il comando sarà eseguito immediatamente. # 0. Coloro che hanno installato Homebrew su Mac OS X possono aggiornare # l'insieme dei programmi installati mediante Homebrew, usando i due # comandi che seguono. Il compouer deve ovviamente essere allacciato alla # rete. brew update brew upgrade --all # Si può anche aggiornare soltanto FFmpeg usando: brew upgrade ffmpeg # 1. Definire il desktop quale cartella di lavoro, dove appariranno i file # generati, in modo da ritrovarli facilmente e da non dover scrivere il # percorso completo. cd ~/Desktop # 2. Generare il film di test con il quale lavoreremo. Si tratta della frattale # di Mandelbrot, che permette di notare facilmente gli errori digitali. # # I parametri sono: # -f la libreria predefinita "lavfi" di FFmpeg # -i l'elemento "mandelbrot" della libreria (i = input file) # -t la durata desiderata in secondi oppure un timecode completo # -pix_fmt per la compatibilità con player vecchi # e alla fine (senza -o) il nome del file da generare ffmpeg -f lavfi -i mandelbrot -t 10 -pix_fmt yuv420p mandelbrot.mov # 3. Generare le barre nel formato DV per NTSC e per PAL. ffmpeg -f lavfi -i testsrc -t 10 -target ntsc-dv barre_ntsc.dv ffmpeg -f lavfi -i testsrc -t 10 -target pal-dv barre_pal.dv # Nei dati tecnici che sfilano alla fine, potete constatare che il file # "testsrc" è in formato RGB24 e che è stato trasformato: # - per DV NTSC: in YUV 4:1:1 con un'immagine di 720 x 480 pixel # rettangolari 8:9 # - per DV PAL: in YUV 4:2:0 con un'immagine di 720 x 576 pixel # rettangolari 16:15 # Senza dimenticare la velocità di proiezione... Proprio non si tratta della # stessa cosa! # 4. Generare un file audio. # # Uso un'onda sinusoidale a 440 Hz che corrisponde alla nota la. ffmpeg -f lavfi -i aevalsrc="sin(440*2*PI*t)" -t 10 nota_la.wav # Ma se preferite accordare il vostro strumento usando un diapason a 432 Hz, # allora scegliete: ffmpeg -f lavfi -i aevalsrc="sin(432*2*PI*t)" -t 10 diapason.wav # 5. Generare un file con audio e video combinati. # # In questo caso ci sono, ovviamente, due file in entrata. ffmpeg -i mandelbrot.mov -i nota_la.wav mandelaaa.mov # 6. Trasformazione del container. Esempio: da MOV a AVI. # # Parametri: # -i il file d'entrata (i = input file) # -c i tipo di trasformazione da applicare (nel nostro caso nessuna, # perché intendiamo modificare il container e non suo contenuto # il file di uscita (senza -o) ffmpeg -i mandelbrot.mov -c copy mandelbrot.avi # Altro esempio: da AVI a MPEG-4. ffmpeg -i mandelbrot.avi -c copy mandelbrot.mp4 # 7. Trasformazione di formato. Esempio: da 4:3 a 16:9 SENZA mettere le bande # nere ai bordi, cioè ciò che NON si dovrebbe fare! ffmpeg -i mandelbrot.mov -aspect 16:9 difforme.mov # Trasformazione corretta con bande nere a destra e a sinistra. ffmpeg -i mandelbrot.mov -filter:v "pad=854:480:107:0" corretto.mov # Varianti politiche: ffmpeg -i mandelbrot.mov -filter:v "pad=854:480:37:0:ff0000" rosso_sinistra.mov ffmpeg -i mandelbrot.mov -filter:v "pad=854:480:107:0:00ff00" verde_centro.mov ffmpeg -i mandelbrot.mov -filter:v "pad=854:480:177:0:0000ff" blu_destra.mov # 8. Trasformare i dati "row". Esempio: NTSC e PAL. ffmpeg -i barre_ntsc.dv -target pal-dv barre_pal_1.dv ffmpeg -i barre_pal.dv -target ntsc-dv barre_ntsc_1.dv # 9. Estrarre i metadati tecnici. # # Parametri: # -i il file d'entrata # -show_format dà il container # -show_streams dà i codec audio e video # -show_data aggiunge un brevissimo "hexdump" a show_streams # [p.f. non chiedetemi a cosa serva] # -show_versions dà i dettagli del FFmpeg installato ffprobe -i mandelbrot.mov ffprobe -i mandelbrot.mov -show_format ffprobe -i mandelbrot.mov -show_streams ffprobe -i mandelbrot.mov -show_data ffprobe -i mandelbrot.mov -show_streams -show_data ffprobe -i mandelbrot.mov -show_versions ffprobe -i mandelbrot.mov -show_format -show_streams -show_data -show_versions ffprobe -i mandelbrot.mov -show_format -show_streams # Il formato di uscita può essere definito. Per esempio: "json" può essere # usato con Java e "xml" con un foglio di stile XSLT. ffprobe -i mandelbrot.avi -show_format -show_streams -print_format flat ffprobe -i mandelbrot.avi -show_format -show_streams -print_format json ffprobe -i mandelbrot.avi -show_format -show_streams -print_format xml # 10. Visualizzare i valori permessi per i parametri. ffmpeg -codecs ffmpeg -decoders ffmpeg -h decoder=flv ffmpeg -h decoder=flac ffmpeg -encoders ffmpeg -filters ffmpeg -formats ffmpeg -layouts ffmpeg -sample_fmts ffmpeg -pix_fmts ffmpeg -bsfs # 11. Calcolare i valori MD5 per ogni immagine di un file. # # Parametro: # -f usare la libreria predefinita "framemd5" di FFmpeg # # Nell'esempio sottostante uso anche comandi terminale per Mac OS X e # e Linux, che purtroppo non funzionano con Windows (usare un editore di # testo semplice). md5 -q mandelbrot.mov md5 -q mandelbrot.avi ffmpeg -i mandelbrot.mov -f framemd5 mandelbrot_mov_frames.md5 ffmpeg -i mandelbrot.avi -f framemd5 mandelbrot_avi_frames.md5 cat mandelbrot_mov_frames.md5 cat mandelbrot_avi_frames.md5 # 12. Generare dei file ProRes a partire da un file in "YUV uncompressed" # (4:2:2 Y'CbCr) senza audio. # # Parametri: # -i il file d'entrata # -c:v il codec video # -profile:v il tipo di codec ProRes: # 0 = proxy # 1 = light (LT) # 2 = standard # 3 = high quality (HQ) # -an niente audio # il file d'uscita (senza -o) ffmpeg -i film_YUV422.mov -c:v prores -profile:v 3 -an film_ProRes.mov # 13. Generare dei file d'accesso nel formato H.264 da un file in # "YUV uncompressed" (4:2:2 Y'CbCr) senza audio. # # Parametri: # -i il file d'entrate # -c:v il codec video # -preset la qualità della compressione (veryslow = migliore qualità # possibile; gli altri valori possibili sono: slower, slow, # medium, fast, faster, veryfast, superfast, ultrafast) # -pix_fmt per la compatibilità con vecchi player # -an niente audio # il file d'uscita (senza -o) ffmpeg -i film_YUV422.mov -c:v libx264 -preset veryslow -pix_fmt yuv420p -an film_H264.mp4 # Si può anche limitare il flusso, invece di definire la qualità # dell'uscita. Questo è utile, per esempio, se il file viene usato in # streaming. # # Parametro: # -b:v la quantità massimale ammessa di bit trasmessi per il video ffmpeg -i mandelbrot.mov -c:v libx264 -b:v 1000k -pix_fmt yuv420p -an compresso_1000k.avi ffmpeg -i mandelbrot.mov -c:v libx264 -b:v 10k -pix_fmt yuv420p -an compresso_10k.avi # 14. Trasformare un file video in singole immagini TIFF... # # Parametri: # -f usare la biblioteca "image2" di FFmpeg che permette di lavorare con # singole immagini # %05d un numero a cinque cifre, iniziando con degli zeri se del caso # Usiamo un file in formato "raw", in modo da poter visualizzare i file TIFF # generati. # # Creare dapprima un folder. [Non so se sotto Windows sia il comando # corretto.] # Questo passo è importante, perché altrimenti vi ritroverete con 250 file # TIFF sul desktop del computer! ffmpeg -f lavfi -i mandelbrot -t 10 -c:v rawvideo mandelbrot_raw.mov mkdir TIFF ffmpeg -i mandelbrot_raw.mov TIFF/mandelbrot_%05d.tif # ... e riassemblarle in un file video. ffmpeg -f image2 -i TIFF/mandelbrot_%05d.tif -c:v rawvideo ricomposto.mov # Quindi verifichiamo che i due file siano veramente identici. md5 -q mandelbrot_raw.mov md5 -q ricomposto.mov 2016-01-10 |