021 script per usare FFmpeg per processare vari video
021 script per usare FFmpeg per processare vari video
#!/bin/bash # ./scriptElaboraVariVideo1.txt # Questo script serve per applicare le medesime trasformazioni a vari files multimediali # presenti nella medesima cartella di lavoro. # conservando intatti i files multimediali. # Si ricorda che FFmpeg, per stabilire quali siano i parametri di default (quindi non impostati dall'utente): # - ricava i codec audio e video di default basandosi sull'estensione del file in uscita; # - ricava i parametri dimensionali di default utilizzando i medesimi parametri del file in entrata; # quindi tutte le righe dello script relative a parametri per i quali si vuole usare i parametri di default # devono essere commentate anteponendovi un #. # EXT=".mp4" # Imposta estensione di ciascun file multimediale elaborato PAR0='' # Definisce PAR0 come una variabile vuota PAR0=' -noautorotate' # Imposta "ignora rotazione automatica" # PARAM="" PAR=' -c:a aac'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Imposta CODEC audio # PAR=' -c:a copy'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Imposta copia CODEC audio # PAR=' -an'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Elimina audio PAR=' -filter:a areverse'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Imposta audio a ritroso PAR=' -filter:a atempo=2.0'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Imposta la velocità AUDIO moltiplicandola per 2,0 PAR=' -filter:a volume=1.5'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Imposta il volume AUDIO moltiplicandolo per 1,5 # PAR=' -filter:a afade=in:st=0:d=1,afade=out:st=32:d=1'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Dissolvenza audio PARAM=${PARAM/'-filter:a '/'0a0'}; PARAM=${PARAM//' -filter:a '/','}; PARAM=${PARAM/'0a0'/'-filter:a '}; echo 'Opzioni:'$PARAM # PAR=' -c:v libx264'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Imposta CODEC video # PAR=' -vn'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Il file multimediale in uscita sarà privo di video # PAR=' -filter:v hflip'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Specchia Destra-Sinistra PAR=' -filter:v vflip'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Specchia Alto-Basso PAR=' -filter:v transpose=0'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Specchia e gira di 90 gradi in senso antiorario il video in ingresso PAR=' -filter:v transpose=1'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Gira di 90 gradi in senso orario il video in ingresso PAR=' -filter:v transpose=2'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Gira di 90 gradi in senso antiorario il video in ingresso PAR=' -filter:v transpose=3'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Specchia e gira di 90 gradi in senso orario il video in ingresso PAR=' -filter:v reverse'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Inverte il senso del video PAR=' -filter:v rotate=30*(PI/180)'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Ruota di 30 gradi in senso orario ciò che compare nel file multimediale in ingresso, ma lo schermo non viene ruotato. PAR=' -filter:v setpts=2.0*PTS'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Dimezza la velocità del video PAR=' -filter:v fade=in:0:30,fade=out:960:30'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Dissolvenza video PAR=' -filter:v scale=800:600'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Il video in uscita avrà risoluzione 800x600 pixels PAR=' -filter:v scale=800:-1'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # La larghezza del video in uscita diventa 800 pixels, e l'altezza viene modificata rispettando le proporzioni del video in ingresso PAR=' -filter:v pad=width=2049:height=1152:x=500:y=300:color=green'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Sovrappone il video in ingresso ad uno sfondo verde largo 2049 pixels ed alto 1152 pixels PAR=' -filter:v crop=640:360:320:120'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Ritaglia un video largo 640 pixels ed alto 360 pixels di cui il pixel in alto a sinistra dista 320 pixels dal bordo sinistro e 120 pixels dal bordo superiore del video in ingresso PARAM=${PARAM/'-filter:v '/'0a0'}; PARAM=${PARAM//' -filter:v '/','}; PARAM=${PARAM/'0a0'/'-filter:v '}; echo 'Opzioni:'$PARAM # PAR=' -s 800x600'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Il video in uscita avrà risoluzione 640x360 pixels # PAR=' -ss 10:23:45.67'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Il file multimediale in uscita inizia 10 ore, 23 minuti, 45 secondi e 67 centesimi di secondo dall'inizio del file multimediale in ingresso # PAR=' -to 12:34:56.78'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Il file multimediale in uscita termina 12 ore, 34 minuti, 56 secondi e 78 centesimi di secondo dall'inizio del file multimediale in ingresso # PAR=' -t 01:23:45.67'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Il file multimediale in uscita termina 1 ora, 23 minuti, 45 secondi e 67 centesimi di secondo dall'inizio del file multimediale in uscita # PAR=' -fs 50M'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Il file multimediale in uscita termina quando raggiunge le dimensioni di 50M # # PAR=' -map 0:v:0 -map 1:a:0'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Crea file multimediale contenente il video del file multimediale 0 (il primo) e l'audio del file multimediale 1 (il secondo) la cui durata è la medesima del più LUNGO dei due files multimediali in ingresso. # PAR=' -map 0:v:0 -map 1:a:0 -shortest'; PARAM=$PARAM$PAR; echo 'Opzioni:'$PARAM # Crea file multimediale contenente il video del file multimediale 0 (il primo) e l'audio del file multimediale 1 (il secondo) la cui durata è la medesima del più CORTO dei due files multimediali in ingresso. # for VIN in 'video01.mp4' 'video02.mp4' # Lista files multimediali da elaborare do VOUT='prefisso-'${VIN::-4}'-suffisso'$EXT # Imposta nome ed estensione del video elaborato COMANDO='ffmpeg'$PAR0' -i '$VIN$PARAM' '$VOUT echo; echo "Ora verrà eseguito il comando" echo $COMANDO # Visualizza il contenuto della variable COMANDO $COMANDO # Esegue il comando contenuto della variable COMANDO done # exit 0 # Lo script termina qui