Tècniques de video

De wikijoan
(dif) ← Versió més antiga | Versió actual (dif) | Versió més nova → (dif)
Salta a la navegació Salta a la cerca

Stop Motion[modifica]

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[modifica]

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[modifica]

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[modifica]

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[modifica]

Provaré el següent esquema que trobo de l'anterior enllaç:

Intervalometre 555.jpg

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