Estrazione di un video in formato 16/9 verticale in un video in formato 16/9 orizzontale.

Dom, 28/10/2018 - 22:50
Ritratto di Sargon6

Estrazione di un video in formato 16/9 verticale in un video in formato 16/9 orizzontale.

Inviato da Sargon6 0 commenti

Estrazione di un video in formato 16/9 verticale in un video in formato 16/9 orizzontale.

$ 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
$ 

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; perchè ciò avvenga esula dallo scopo di questa guida, quindi mi limito a dire che ruotando il file video prima in senso antiorario e poi in senso orario, il file video diventa orizzontale a prescindere dallo strumento utilizzato per visualizzarlo.

ffmpeg -i video01.mp4 -vcodec libx264 -filter:v fps=30 -b:v 12M -bufsize 12M -vf transpose=2 -acodec copy video02.mp4 # crea il file video02.mp4 col medesimo contenuto del file video01.mp4 utilizzando codec ed altri parametri impostati dall'utente ruotato di 90 gradi in senso antiorario
 
ffmpeg -i video02.mp4 -vcodec libx264 -filter:v fps=30 -b:v 12M -bufsize 12M -vf transpose=1 -acodec copy video03.mp4 # crea il file video02.mp4 col medesimo contenuto del file video01.mp4 utilizzando codec ed altri parametri impostati dall'utente ruotato di 90 gradi in senso orario

ATTENZIONE!! Io, come parametri imposti dall'utente, ho utilizzato quelli che, in questo caso, più si avvicinavano a quelli del MIO file video di partenza, quindi, partendo da un file video con caratteristiche diverse, oppure volendo ottenere un file video con caratteristiche diverse, occorre fornire parametri diversi.

$ 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
$ 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
$ 

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 orizzontale, possiamo ritagliare una porzione di immagine larga quanto l'immagine originale, ovvero 720 pixels, e alta (720:16)x9= 405 pixels in modo che inizi 300 pixels più in basso rispetto lo spigolo superiore sinistro del video

$ ffmpeg -i video03.mp4 -vf crop=w=720:h=405:x=0:y=300 video04.mp4 # ritaglia una porzione di immagine larga quanto l'immagine originale, ovvero 720 pixels, e alta (720:16)x9= 405 pixels in modo che inizi 300 pixels più in basso rispetto lo spigolo superiore sinistro del video
oppure

$ ffmpeg -i video03.mp4 -vcodec libx264 -filter:v fps=30 -b:v 12M -bufsize 12M -vf crop=w=720:h=405:x=0:y=300 -acodec copy video05.mp4 # ritaglia una porzione di immagine larga quanto l'immagine originale, ovvero 720 pixels, e alta (720:16)x9= 405 pixels in modo che inizi 300 pixels più in basso rispetto lo spigolo superiore sinistro del video utilizzando codec ed altri parametri impostati dall'utente

$ mediainfo video04.mp4 | egrep -iA2 Width # Mostra larghezza, altezza, e rapporto di un file video chiamato video04.mp4
Width                                    : 720 pixels
Height                                   : 404 pixels
Display aspect ratio                     : 16:9
$ mediainfo video05.mp4 | egrep -iA2 Width # Mostra larghezza, altezza, e rapporto di un file video chiamato video05.mp4
Width                                    : 720 pixels
Height                                   : 404 pixels
Display aspect ratio                     : 16:9
$

I files video così ottenuti sono facilmente visualizzabili senza alcuna distorsione su un qualsiasi televisore digitale 16/9.