Creare un video 3d side-by-side con ffmpeg

In questi ultimi tempi, si stanno diffondendo dei nuovi “dispositivi” che permettono di avere un esperienza 3d, molto economici chiamati “VR CardBoard” (il più economico che ho trovato su amazon costa 9.99 euro http://goo.gl/EPBZ9x).

Se non vi è ancora capitato, potete vedere il progetto di google chiamato Google CardBoard (https://goo.gl/PV10cP) dove ci sono le istruzioni per costruirlo.

Questo dispositvo sfrutta una tecnica per il 3d chiamata side-by-side, che in pratica consiste dividere lo schermo in due parti uguali, e in ogni parte riprodurre lo stesso video (questo comando si può usare anche con due video separati).

one-cardboard

Il comando per farlo è:

ffmpeg -i inputleft.avi -vf "movie=inputright.avi [in1]; [in]pad=iw*2:ih:iw:0[in0]; [in0][in1] overlay=0:0 [out]" sidebyside.avi

Vediamo di capire un attimo cosa fa questo comando:

  • -i inputleft.avi – È il file che vogliamo alla sinistra dello schermo
  • -vf indica che vogliamo applicare un filtro video.
  • movie=inputright.avi – è il file che vogliamo sul lato destro identificato da [in1]
  • [in] indica l’input principale
  • pad è il padding dell’input video ed ha larghezza pari al doppio dell’originale, la larghezza è indichata con iw, l’altezza resta invariata, la posizione di inizio x è appunto iw (quindi a metá) mentre la y e alla posizione 0 dell’input [in0] (inputleft)
  • l’input stream è splittato in due stream [in0][in1], con overlay 0:0
  • Il file di output è sidebyside.avi

Chiaramente potete usare anche altri formati di file (non per forza avi) per fare questa conversione.

Chiaramente se non volete perdere tempo a creare la versione 3d del file potete visualizzarlo direttamente con ffplay, con un comando del tutto identico a quello sopra:

ffplay -i inputleft.avi -vf "movie=inputright.avi [in1]; [in]pad=iw*2:ih:iw:0[in0]; [in0][in1] overlay=0:0 [out]"

Unica differenza è appunto il comando ffplay invece di ffmpeg.

Leave a Reply

Your email address will not be published. Required fields are marked *