Come realizzare un video Stop Motion o Time-lapse con la webcam?


28

Ho una webcam che funziona come un dispositivo v4l2.

Qual è il modo più conveniente per acquisire un video stop-motion o time-lapse ?

NB

stop-motion e time-lapse sono correlati ma concettualmente diversi.

Time-lapse è dove scatti una foto di una scena a un intervallo prestabilito e poi la combini in un video (sembra che stia andando molto veloce).

Stop-motion è il luogo in cui controlli la scena e scatti un'immagine per ogni modifica apportata, per formare un'animazione (ad esempio Wallace e Grommit).

Un'applicazione per time-lapse deve essere in grado di scattare una foto a intervalli prestabiliti.


Una domanda simile in Foto ha risposte interessanti che si sovrappongono in parte.
anarcat,

Risposte:


40

Catturare un milione di immagini.

Il primo passo è catturare immagini. Immaginiamo di voler scattare una foto ogni 10 secondi e salvarla in una directory sul desktop

mkdir ~/Desktop/cap
cd ~/Desktop/cap

Usiamo streamerper fare l'acquisizione, quindi installiamolo:

sudo apt-get install streamer

E ora vogliamo catturare

streamer -o 0000.jpeg -s 300x200 -j 100 -t 2000 -r 1

-tè il numero di fotogrammi che vogliamo acquisire. -rè fotogrammi al secondo. Quindi questo dovrebbe prendere un fotogramma al secondo. Se lo comprimi in un video a 30 fps, un minuto di acquisizione diventa 2 secondi di video. Ti consigliamo di ottimizzarlo in modo appropriato a seconda della quantità di output video che desideri.

Quella linea ti darà 2000 immagini, ci vorrà mezz'ora per registrare e, a 30fps, genererà poco più di 1 minuto di video.

Mettere tutto insieme

Ho intenzione di usare ffmpeg. Ci sono molti modi diversi per metterlo insieme, incluso, mencoderma preferisco solo ffmpegla visione della vita. Dopo averlo installato ( sudo apt-get install ffmpeg) basta eliminare questo:

ffmpeg -r 30 -i %04d.jpeg -s hd480 -vcodec libx264 -vpre hq time-lapse.mp4

Le impostazioni di qualità non sono simili a quelle della mia webcam, quindi potresti voler giocare con le opzioni molto di più per ottenere una codifica migliore, ma ciò dovrebbe generare un bel video a 30 fps, compresso in x264.

Potresti voler giocare con il framerate ( -r) ma non andrei sotto i 15fps.


1
Ogni dieci secondi sarebbero necessari -r 0.1.
Seppo Erviälä,

man streamernon descrive ciò che fa ogni parametro. Dove posso ottenere informazioni sui jparametri? Come potrei farlo catturare fino a quando non premo CTRL + C, con un determinato FPS?
Tomáš Zato - Ripristina Monica

@oli ffmpegnon funziona più per me. Cosa dovrei usare?
Tim

1
@ChrisH Va tecnicamente bene, intendo solo che è il taglio di base per un video fluido. Ciò dipende in gran parte dalla velocità con cui li stai prendendo.
Oli

2
@ TomášZato streamer -hè molto più completo. Odio quando gli sviluppatori si sforzano molto, --helpma niente per la pagina man.
WasabiFlux,

9

Per catturare ogni X quantità di secondi da una webcam usa il movimento.

Installare motion

sudo apt-get install motion o sudo aptitude install motion

Configura il movimento per ogni X quantità di secondi

sudo nano /etc/motion/motion.conf

Cambia le variabili minimum_frame_time e snapshot_interval sullo stesso numero di secondi in cui desideri scattare la foto con la webcam.

10 minuti = 600 secondi
20 minuti = 1200 secondi
30 minuti = 1800 secondi
1 ora = 3600 secondi
2 ore = 7200 secondi e così via ...

correre in movimento con sudo motion fermalo con CTRL+C

NOTA: configurare motion.conf per salvare i file in un'altra directory rispetto a quella predefinita / tmp. Ad esempio la tua cartella principale. Dal momento che andare su / tmp ha bisogno di più privilegi. Troverai anche molte opzioni utili in motion.conf per molte altre cose che ti potrebbero piacere.


È molto meglio dello streamer. Non sono sicuro che mi piaccia una soluzione irrinunciabile e sembra che perda la possibilità di usarla come uno specchietto retrovisore, ma è molto meglio dello streamer e potrebbe risolvere un altro problema che volevo cercare a, che sta scattando una foto solo se ci sono. Contrassegnerò questo risolto se posso risolvere gli altri problemi.
Dave Jacoby,

In realtà non è necessario l'accesso come root per usarlo. È necessario solo l'accesso root per modificare il file di configurazione.
Luis Alvarado,

Suppongo che se si desidera scrivere nel percorso predefinito, potrebbe essere necessario anche questo, ma questa è la prima cosa che ho cambiato. Grazie.
Dave Jacoby,

Nessun problema amico. Felice di aiutare.
Luis Alvarado,

L'ho provato. Ha funzionato bene. Potrei riprovare ad un certo punto. Ma non mi ha dato l'aspetto retrovisore, che apprezzo di più rispetto alla ripresa automatica delle foto. Quindi, sto eseguendo Cheese in questo momento.
Dave Jacoby,

7

gTimelapse ( link per il download )

inserisci qui la descrizione dell'immagine

Un'applicazione per l'acquisizione di immagini per generare video timelapse, basata sulle librerie gPhoto2 e wxWidgets.

Compila le istruzioni

Scarica la fonte dal sito Web sourceforge

in un terminale digitare quanto segue:

cd Downloads 
gunzip gtimelapse-0.1.tar.gz
tar -xvf gtimelapse-0.1.tar
cd gtimelapse
sudo apt-get install build-essential libgphoto2-2-dev libwxbase2.8-dev libwxgtk2.8-dev gphoto2
./configure
make
sudo make install

Per eseguire il tipo di applicazione

gtimelapse &

nb 1

gphoto2 --list-cameras | more

nb 2

consulta questo blog per ulteriori informazioni utili

elenca tutti i dispositivi compatibili supportati dall'applicazione

nb 3

Ho letto che gphoto2 non supporta le webcam - lascerò comunque visibile questa risposta nel caso in cui qualcuno volesse provare questa risposta con una fotocamera digitale decente invece di una webcam.


Ci è voluto un po 'di tempo per recuperare e compilare wxWidgets con tutti i prerequisiti. Ho anche compilato gTimelapse ma si arresta in modo anomalo con: [Debug] 13:21:12: ./src/common/menucmn.cpp(859): asserire "item" non riuscito in Check (): wxMenu :: Check: nessun elemento del genere [Debug] Generazione di una traccia dello stack ... attendere TRAPP / breakpoint trap
Seppo Erviälä,

ok - Oggi proverò a costruirmi - Aggiungerò alcune istruzioni alla mia risposta (supponendo che io stesso possa farlo costruire).
Fossfreedom

Questo in realtà è molto utile dal momento che ho una fotocamera digitale supportata da gphoto2. Non sapevo che esistesse una biblioteca come questa.
Seppo Erviälä,

1

Ho usato Stopmotion per fare questo, è nel centro software. Puoi anche catturare con Cheese, ma devi modificare la configurazione di Cheese per aumentare il numero massimo di immagini. Ho trovato più semplice usare Stopmotion per l'intero processo.


1

Il modo migliore e semplice per farlo è installando Motion . È un software di sorveglianza su larga scala per sistemi operativi basati su Linux.

Installa tramite il centro software


1

Un'opzione veloce, sporca, ma un po 'più flessibile è la seguente:

ffmpeg -pattern_type glob -framerate 25 -i 'image-*.jpg' -c:v libx264 \
    -profile:v high -crf 20 -pix_fmt yuv420p output.mp4

Qui sto aggiungendo -pattern_type glob, utilizzando il carattere jolly *, e mettendo il mio nome file in singole citazioni: 'image-*.jpg'.

Il vantaggio: questa sintassi ti consente di iniziare da qualsiasi numero e avere qualsiasi modello nella tua numerazione (spesso creo un conteggio per 20, iniziando ad esempio intorno a 20000).

Gli svantaggi: questa sintassi non consente di saltare cifre ripetute come consente la sintassi '% ## d'. Inoltre, non è possibile avere uno schema di numerazione senza precedenti 0. In altre parole, lo schema di denominazione dei file deve essere simile a 00001, 00002, ... 00033 ... (La numerazione non può essere 1,2,3, ... 33, ..., altrimenti il ​​numero "3" verrà ordinato tra '39' e '40' per esempio).

Separatamente, nota anche che ho dovuto mettere il mio nome del file di input tra virgolette singole, altrimenti ffmpeg ha provato a sovrascrivere tutti i miei file di immagine con una copia della prima immagine (è sempre una buona idea copiare per un backup prima di manipolare i file ).

Da questa modifica di un utente anonimo.


0

Dovresti essere in grado di impostare il movimento (in motion.conf) per lo streaming - per impostazione predefinita, viene trasmesso sulla porta 8081. Tutto quello che devi fare per ottenere il tuo specchio 'vista posteriore' è aprire VLC, "Apri flusso di rete" e puntalo su http: // localhost: 8081 .


0

Camorama è un visualizzatore / registratore di webcam che ho usato per scattare foto, a intervalli di 1 minuto e caricarle su un server Web, dalla mia webcam; è una configurazione semplice. Inoltre è disponibile in Ubuntu Software Center oppure puoi installarlo usando:

sudo apt-get install camorama

Spero che sia di aiuto.


Scusa, ho appena visto che hai scritto che la tua webcam non funziona con Camorama.
kicsyromy,

Potresti per favore spiegare in maggiori dettagli? L'uomo non copre l'opzione timelapse :(
Mars Robertson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.