017 Aggiungere dello spazio ai lati di un video – Esempio pratico

27 Agosto, 2022 (16:01) | ffmpeg, Fotografia digitale, Linux, Video | By: sargonsei

017 Aggiungere dello spazio ai lati di un video – Esempio pratico.
Trasformazione di un video in formato 16/9 verticale in un video in formato 16/9 orizzontale tramite l’aggiunta di barre laterali.

ubuntu@ubuntu-X555YI:~/Video/VideoPad$ mediainfo video01.mp4 | egrep -iA2 Width # Mostra larghezza, altezza, e rapporto di un file video chiamato video01.mp4
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
ubuntu@ubuntu-X555YI:~/Video/VideoPad$

Analizzando l’output del comando suddetto, vediamo che il file video video01.mp4 è largo 1280 pixels, è alto 720 pixels, ed ha un rapporto X/Y pari a 16/9, un formato molto comune fra cellulari e smartphone recenti.
Se è stato ottenuto tramite uno smartphone tenuto orizzontalmente, possiamo visualizzarlo senza problemi non solo tramite il video player del computer, ma anche tramite un televisore, oppure tramite un cellulare, purché dotati di schermo 16/9.
Un file video ripreso tramite uno smartphone tenuto verticale appare riprodotto verticalmente o orizzontalmente a seconda dello strumento che si utilizza per riprodurlo, ed io non ne conosco il motivo, quindi mi limito a dire che: ruotando il file video prima in senso antiorario e poi in senso orario (oppure prima in senso orario e poi in senso antiorario), il file video creato tenendo lo smartphone in posizione VERTICALE apparirà in posizione VERTICALE a prescindere dallo strumento utilizzato per visualizzarlo.

ffmpeg -i video01.mp4 -vf transpose=2 video02.mp4 # crea il file video02.mp4 col medesimo contenuto del file video01.mp4 ruotato di 90 gradi in senso antiorario, utilizzando codec ed altri parametri come da default in base all'estensione dei files utilizzati

ffmpeg -i video02.mp4 -vf transpose=1 video03.mp4 # crea il file video03.mp4 col medesimo contenuto del file video02.mp4 ruotato di 90 gradi in senso orario, utilizzando codec ed altri parametri come da default in base all'estensione dei files utilizzati

ubuntu@ubuntu-X555YI:~/Video/VideoPad$ mediainfo video02.mp4 | egrep -iA2 Width # Mostra larghezza, altezza, e rapporto di un file video chiamato video02.mp4
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
ubuntu@ubuntu-X555YI:~/Video/VideoPad$ mediainfo video03.mp4 | egrep -iA2 Width # Mostra larghezza, altezza, e rapporto di un file video chiamato video03.mp4
Width : 720 pixels
Height : 1 280 pixels
Display aspect ratio : 0.562
ubuntu@ubuntu-X555YI:~/Video/VideoPad$

Abbiamo così ottenuto il file video03.mp4 correttamente orientato (16/9 verticale, ovvero 9/16, vale a dire 0.562) a prescindere dallo strumento utilizzato per visualizzarlo, ma, se tentiamo di visualizzarlo con un televisore in formato 16/9, non verrà visualizzato correttamente, in quanto il software dei televisori digitali impone la visualizzazione espandendo l’immagine a dimensioni dello schermo, dilatandone la larghezza.

Per poter visualizzare correttamente l’immagine al centro di uno schermo in formato 16/9, e volendo conservare la risoluzione in altezza pari a 1280 pixels, occorre inserire il video al centro di un riquadro alto 1280 pixels e largo (1280/9×16)=2275 pixels (arrotondiamo a 2280 pixels) in modo che inizi (2280-720)/2= 780 pixels più a destra rispetto lo spigolo superiore sinistro del video. FFmpeg permette di raggiungere questo risultato impartendo l’istruzione seguente:

ffmpeg -i video03.mp4 -vf pad=width=2280:height=1280:x=780:y=0:color=red video04.mp4 # inserire il video al centro di un riquadro alto 1280 pixels e largo 2280 pixels in modo che inizi (2280-720)/2= 780 pixels più a destra rispetto lo spigolo superiore sinistro del video.

ubuntu@ubuntu-X555YI:~/Video/VideoPad$ mediainfo video04.mp4 | egrep -iA2 Width # Mostra larghezza, altezza, e rapporto di un file video chiamato video04.mp4
Width : 2 280 pixels
Height : 1 280 pixels
Display aspect ratio : 16:9
ubuntu@ubuntu-X555YI:~/Video/VideoPad$

Ora il video ottenuto ha l’aspetto che volevamo avesse (16/9 orizzontale), ma forse la risoluzione è troppo alta per essere riprodotta su un comune televisore, e sicuramente è troppo alta per essere riprodotta dal MIO televisore che supporta al massimo una risoluzione di 1366 pixels in larghezza per 768 pixels in altezza.
Ovviamente, per risolvere il problema, è sufficiente ridurre la risoluzione del file video così ottenuto, cosa che FFmpeg permette di fare utilizzando il comando

ffmpeg -i video04.mp4 -s 1366x768 video05.mp4 # Modifica la risoluzione di un file multimediale portandola a [-s 1366x768] utilizzando codec ed altri parametri come da default in base all'estensione dei files utilizzati.
Qualora i parametri impostati di default siano incompatibili con le caratteristiche del televisore destinato a riprodurre i video così ottenuti, l’utente dovrà impostare a mano i dati necessari.
I files video così ottenuti sono facilmente visualizzabili senza alcuna distorsione su un qualsiasi televisore digitale 16/9 con risoluzione massima 1366×768 pixels.