Pyramid hologram

De wikijoan
Salta a la navegació Salta a la cerca

Introducció[modifica]

Preparatius. ffmpeg[modifica]

Les opcions -strict -2 són perquè tinc un SO 12.04 que ha quedat una mica desfasat (febrer 2016)
$ ffmpeg -i in.mp4 -strict -2 out.mp4
Per mantenir la qualitat utilitzo el bitrate. Puc mirar quin era el bitrate original fent:
$ ffmpeg -i in.mp4
..-
  Duration: 00:00:07.07, start: 0.000000, bitrate: 10596 kb/s
  Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 10011 kb/s, SAR 65536:65536 DAR 16:9, 14.28 fps, 42.83 tbr, 90k tbn, 180k tbc (default)

$ ffmpeg -i in.mp4 -strict -2 -b 10000k out3.mp4


crop
$ ffmpeg -i in.mp4 -strict -2 -vf "crop=200:200:50:50" out2.mp4

També podem veure com queda sense haver de generar el fitxer:
ffplay -i in.mp4 -vf "crop=100:100:30:30"

rotate:
ffmpeg -i in.mp4 -strict -2 -b 10000k -vf "transpose=1" out5.mp4
ffmpeg -i in.mp4 -strict -2 -b 10000k -vf "transpose=1, transpose=1" out6.mp4

0 = 90CounterCLockwise and Vertical Flip (default)
1 = 90Clockwise
2 = 90CounterClockwise
3 = 90Clockwise and Vertical Flip

-vf "transpose=2,transpose=2" -> for 180graus

overlay:

en aquest exemple posem un video al costat de l'altre. Em funciona l'opció -filter_complex, que a l'institut no em funcionava.

ffmpeg -i in.mp4 -i out6.mp4 -strict -2 -b 10000k -filter_complex \
"[0:v]setpts=PTS-STARTPTS, pad=iw*2:ih[bg]; \
[1:v]setpts=PTS-STARTPTS[fg]; [bg][fg]overlay=w; \
amerge,pan=stereo:c0<c0+c2:c1<c1+c3" out7.mp4

Jo el que vull fer és crear un mosaic:
*https://trac.ffmpeg.org/wiki/Create%20a%20mosaic%20out%20of%20several%20input%20videos

ffmpeg -i in.mp4 -i in.mp4 -i in.mp4 -i in.mp4 -strict -2 -b 10000k -filter_complex "nullsrc=size=640x480 [base]; [0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright]; [2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft]; [3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright]; [base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright] overlay=shortest=1:x=320 [tmp2]; [tmp2][lowerleft] overlay=shortest=1:y=240 [tmp3]; [tmp3][lowerright] overlay=shortest=1:x=320:y=240" out8.mp4

Si vull que el video mantingui la proporció original de 1280x720:
ffmpeg -i in.mp4 -i in.mp4 -i in.mp4 -i in.mp4 -strict -2 -b 10000k -filter_complex "nullsrc=size=1280x720 [base]; [0:v] setpts=PTS-STARTPTS, scale=640x360 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=640x360 [upperright]; [2:v] setpts=PTS-STARTPTS, scale=640x360 [lowerleft]; [3:v] setpts=PTS-STARTPTS, scale=640x360 [lowerright]; [base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright] overlay=shortest=1:x=640 [tmp2]; [tmp2][lowerleft] overlay=shortest=1:y=360 [tmp3]; [tmp3][lowerright] overlay=shortest=1:x=640:y=360" out9.mp4

Anem a fer una prova de com s'ubica un video quadrat enmig d'un video més gran
Primer faig un quadrat de la imatge que m'interessa:
ffmpeg -i in.mp4 -y -strict -2 -b 10000k -vf "crop=700:700:50:50" orig1.mp4

i ara ubico aquest video al mig, i fico que la base sigui el tamany original. Però el problema és que no tinc un video de 1280x720 que serveixi de fons.
ffmpeg -i orig1.mp4 -y -strict -2 -b 10000k -filter_complex "nullsrc=size=1280x720 [base]; [0:v] setpts=PTS-STARTPTS [middle]; [base][middle] overlay=shortest=1:x=100:y=10" out10.mp4

Tinc la imatge, i la converteixo a video:
ffmpeg -loop 1 -i fons.jpg -t 8 -pix_fmt yuv420p fons.mp4

ffmpeg -i fons.mp4 -i orig1.mp4 -y -strict -2 -b 10000k -filter_complex "nullsrc=size=1280x720 [base]; [0:v] setpts=PTS-STARTPTS [fons]; [1:v] setpts=PTS-STARTPTS [middle]; [base][fons] overlay=shortest=1[tmp1];[tmp1][middle] overlay=shortest=1:x=100:y=10" out11.mp4

Crec que el truco està en ficar una imatge negra de 1280x720: fons.png

Ara anem a fer ja un pyramid hologram.

Primer faig un quadrat de la imatge que m'interessa:
ffmpeg -i in.mp4 -y -strict -2 -b 10000k -vf "crop=700:700:50:50" orig1.mp4

Ara faig les tres rotacions:
ffmpeg -i orig1.mp4 -y -strict -2 -b 10000k -vf "transpose=1" orig2.mp4
ffmpeg -i orig1.mp4 -y -strict -2 -b 10000k -vf "transpose=1, transpose=1" orig3.mp4
ffmpeg -i orig1.mp4 -y -strict -2 -b 10000k -vf "transpose=2" orig4.mp4

i ara ja poso aquests 4 videos en el seu lloc, però s'ha de fer una mica de càlculs geomètrics. La clau estarà en què els videos han de tenir negre de fons. I al fons de tot, tinc el meu video negre.


creat per Joan Quintana Compte, febrer 2016