Tècniques de video
Contingut
Stop Motion
- http://thp.io/2007/12/creating-stopmotion-movies-with-ffmpeg.html
- http://flavor8.com/index.php/2008/10/11/how-to-stop-motion-in-ubuntu/
c=0; for i in *.JPG; do mv "$i" "`printf %05d $c`.JPG"; c=$((c+1)); done for i in *.JPG; do convert "$i" -resize 1350x900 -normalize "$i"; done ffmpeg -r 10 -b 1800 -i %05d.JPG output.mp4
el bitrate de 1800 (-b 1800) dóna una qualitat baixa però el fitxer resultat és baix. Per millorar la qualitat puc utilitzar -sameq:
ffmpeg -r 10 -sameq -i %05d.JPG output.mp4
Les imatges de la Canon ESO 550D a màxima resolució és:
- 5184/3456 = 1,5
per adaptar-ho a la meva pantalla de l'ordinador: 1350/900=1,5
Notes:
- -r controls frame rate; I’m using a frame rate of 10
- -i is the input file name; here I’m saying “take all jpegs whose name is 4 digits, in sequence”
- -b is the bitrate. 1800 is pretty low quality but results in a manageable file
- -s is necessary if your photos are landscape; ffmpeg assumes they’re portrait by default
per agafar un so de tren:
em registro a la web: joanillo/jq****
Finalment el resultat de la primera prova: el tren del Pere:
i la segona prova és l'excavadora:
chroma-key
He fet proves, funciona bé, no és difícil. Ara bé, el fons verd (o d'un altre color) ha de ser sense ombres, i per tant es fa necessari treballar amb iluminació artificial per tal de què no hi hagi ombres.
Slow motion, càmera lenta
Tinc gravada la caiguda d'unes peces de fusta (gravat amb la Canon EOS 550 a 1280x720 i 50fps). Vull fer càmera lenta.
Amb el Openshot: és molt còmode, tot i que hi ha un bug (versió 1.2.2). Selecciono el fragment, botó dret -> propietats, pestanya Velocitat. Selecciono per exemple 1/8 (0.125). El problema està en què no s'allaga en el temps el fragment i per tant, queda retallat. He d'anar a pestanya Durada, i clico sobre la fletxa cap amunt de Fora (mantinc pitjat), i se m'aturarà en el segon d'allà on s'acava el clip. Una mica cutre, però funciona.
Directament amb ffmpeg.
$ ffmpeg -i MVI_3219.MOV ... Duration: 00:00:07.38, start: 0.000000, bitrate: 47855 kb/s Stream #0.0(eng): Video: h264, yuv420p, 1280x720, 46312 kb/s, 50 fps, 50 tbr, 50k tbn, 100k tbc ...
Veig que efectivament és un video de 7 seg gravat a 50fps, amb resolució 1280x720
Podria convertir el vidoe a 20fps, però això no és càmera lenta (continua durant 7 segons). Senzillament m'estic menjant frames:
$ ffmpeg -i MVI_3219.MOV -sameq -r 20 output_20.MOV Duration: 00:00:07.40, start: 0.000000, bitrate: 6259 kb/s Stream #0.0(eng): Video: mpeg4, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 6203 kb/s, 20 fps, 20 tbr, 20 tbn, 20 tbc
Això sí, com que estic a 20fps la qualitat no és dolenta, continua veient-se bé. Una altra cosa és provar amb 5fps.
El que jo vull és allargar la durada del video, i no menjar-me cap frame, aprofitar tota la informació que tinc. (el Openshot ho fa bé).
The "ffmpeg -r <rate>" option will set the target framerate, but keeps the duration. So it adds frames or removes frames, but does not speed up or slow down the video. Similar for mencoder "-ofps".
Diu que mencoder en línia de comanda sí que té l'opció sleep.
Una possibilitat seria extreure totes les imatges del video, i tornar a composar el video a la velocitat que jo vull:
ffmpeg -i MVI_3219.MOV -r 50 -s 1280x720 -f image2 foo-%03d.jpeg
He obtingu 369 fotos, que és lo correcte: 7,38sec*50 frames/sec = 369 (tinc tota la informació del video en la meva col.lecció de fotos).
I ara recombino:
ffmpeg -i foo-%03d.jpeg -r 20 -s 1280x720 -sameq output_20.avi
I sembla que ho fa bé (però no!!). És un video de 14,75 sec (i hauria de ser 18,45 sec...). No ho fa bé perquè utilitzant -r 10 torna a donar 14 sec, i amb qualsevol altra prova també...
La solució la he trobat de
$ ffmpeg -i MVI_3219.MOV -f rawvideo -sameq -s 1280x720 - | \ ffmpeg -f rawvideo -r 10 -sameq -s 1280x720 -i - output_10.MOV
i ho fa molt bé, doncs fa una mena d'interpolació que fa que sigui un slow motion molt suau. (ho he provat amb 10fps i 5fps)
Reanomenar les imatges al revés
Quan vull fer el stop motion del puzzle, tinc el puzzle muntat, i vaig fent les fotos mentre el desmunto. Per tant, la primera foto ha de ser la última, i la última la primera. Per reanomenar les fotos en l'ordre invers es pot fer servir aquest senzill script: reverse.sh
#!/bin/bash #rename files in reverse START=99999 #allows for an hour of jpegs i=$START for f in *.JPG do mv $f $i.JPG i=$(($i -1)) echo $i done
Time Lapse. Intervalòmetre amb el 555
Provaré el següent esquema que trobo de l'anterior enllaç:
- Datasheet del 555: Fitxer:Lm555.pdf.
Com veiem en el datasheet (pag 8), l'esquema que vull implementar és el mode astable tal com està definit en la pàgina 8. (genera pulsos a intervals que es pot regular amb el potenciòmetre).
La fórmula per calcular el periode i la freqüència està en el datasheet:
T = 0.693*(Ra +2Rb)C
Ra és la resistència sèrie formada pel potenciòmetre + 560ohm. Per tant, veig que si vull incrementar el periode fins a l'ordre de 1 hora he d'agafar un potenciòmetre de bastanta resistència.
El circuit ha funcionat. La única cosa que he d'investigar és que quan tanca el relé no es torni a obrir immediatament, sinó estudiar la possibilitat de què hi hagi un petit retràs.
La solució està en el datasheet. El temps de descàrrega és:
T = 0.693*Rb*C
i per tant he de fer la resistència entre els pins 6 i 7 més grossa. Per a 1uF:
Rb=5.6K -> T=0.693*5.6k*10-6 = 0,0038seg Rb=100K -> T=0.693*100k*10-6 = 0,0693seg Rb=1M -> T=0.693*1000k*10-6 = 0,693seg
Una altra possibilitat basada en el Atmega168/arduino seria:
En aquest projecte és interessant perquè s'utilitza un laser cutter (70 Watt Epilog laser cutter).
creat per Joan Quintana Compte, març 2011, octubre 2011, gener 2013