web-dev-qa-db-fra.com

Comment faire une vidéo Stop Motion ou Time-lapse avec webcam?

J'ai une webcam qui fonctionne comme un périphérique v4l2.

Quel est le moyen le plus pratique de capturer une vidéo en stop-motion ou time-lapse ?

N.B.

stop-motion et time-lapse sont liés mais conceptuellement différents.

Time-lapse est l'endroit où vous prenez une photo d'une scène à un intervalle défini, puis combinez-la en une vidéo (qui semble aller très vite).

Le stop-motion est l'endroit où vous contrôlez la scène et prenez une image pour chaque changement que vous apportez, afin de former une animation (par exemple, Wallace et Grommit).

Une application pour time-lapse doit pouvoir prendre une photo à un intervalle défini.

27
Seppo Erviälä

Capturer un zillion d'images.

La première étape consiste à capturer des images. Imaginons que vous souhaitiez prendre une photo toutes les 10 secondes et l'enregistrer dans un répertoire situé sur votre bureau.

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

Nous utilisons streamer pour faire la capture, installons-la:

Sudo apt-get install streamer

Et maintenant nous voulons capturer

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

-t est le nombre d'images que nous voulons capturer. -r est le nombre d'images par seconde. Donc, cela devrait prendre une image chaque seconde. Si vous compressez cela en une vidéo à 30 images par seconde, une minute de capture devient 2 secondes de vidéo. Vous voudrez régler cela de manière appropriée en fonction de la quantité de sortie vidéo que vous souhaitez.

Cette ligne vous donnera 2000 images, cela prendra une demi-heure pour enregistrer et, à 30 images par seconde, générera un peu plus d’une minute de vidéo.

Mettre tous ensemble

Je vais utiliser ffmpeg. Il existe de nombreuses façons de le rassembler, y compris mencoder mais je préfère simplement ffmpeg's Outlook on life. Après l’avoir installé (Sudo apt-get install ffmpeg), expliquez simplement ceci:

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

Les paramètres de qualité ne ressemblent en rien à ceux de ma webcam. Vous voudrez peut-être jouer avec les options beaucoup plus pour obtenir un meilleur encodage, mais cela devrait vous générer une belle vidéo à 30 ips, compressée en x264.

Vous voudrez peut-être jouer avec le nombre d'images par seconde (-r) mais je ne voudrais pas descendre en dessous de 15fps.

39
Oli

Pour capturer toutes les X secondes d'une webcam, utilisez le mouvement.

Installez motion

Sudo apt-get install motion ou Sudo aptitude install motion

Configurer le mouvement pour chaque quantité X de secondes

Sudo nano /etc/motion/motion.conf

Modifiez les variables minimum_frame_time et snapshot_interval avec le même nombre de secondes que vous souhaitez prendre la photo avec la webcam.

10 minutes = 600 secondes
20 minutes = 1200 secondes
30 minutes = 1800 secondes
1 heure = 3600 secondes
2 heures = 7200 secondes et ainsi de suite ...

exécuter le mouvement avec Sudo motion l'arrêter avec CTRL+C

REMARQUE - Configurez motion.conf pour enregistrer les fichiers dans un autre répertoire que le répertoire/tmp par défaut. Par exemple votre dossier personnel. Depuis, aller à/tmp nécessite plus de privilèges. Vous trouverez également de nombreuses options utiles dans motion.conf pour de nombreuses autres choses qui pourraient vous intéresser.

8
Luis Alvarado

gTimelapse ( lien de téléchargement )

enter image description here

Une application pour capturer des images afin de générer des vidéos timelapse, construite sur les bibliothèques gPhoto2 et wxWidgets.

Instructions de compilation

Télécharger la source depuis le site Web sourceforge

dans un terminal, tapez ce qui suit:

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

Pour exécuter le type d'application

gtimelapse &

nb 1

gphoto2 --list-cameras | more

nb 2

voir ceci blog pour plus d'infos utiles

répertorie tous les périphériques compatibles pris en charge par l'application

nb 3

J'ai lu que gphoto2 ne prend pas en charge les webcams - je laisserai cette réponse visible de toute façon, au cas où quelqu'un voudrait essayer cette réponse avec un appareil photo numérique correct au lieu d'une webcam.

7
fossfreedom

Le meilleur moyen de procéder consiste à installer Motion . C'est un logiciel de surveillance à grande échelle pour les systèmes d'exploitation basés sur Linux.

Install via the software center

1
Vesa

J'ai utilisé Stopmotion pour faire cela, c'est dans le centre logiciel. Vous pouvez également capturer avec Cheese, mais vous devez modifier la configuration de Cheese pour augmenter le nombre maximum d'images. J'ai trouvé plus facile d'utiliser Stopmotion pour tout le processus.

1
Tom Brossman

Vous devriez pouvoir configurer motion (dans motion.conf) pour diffuser - par défaut, il diffuse sur le port 8081. Tout ce que vous avez à faire pour obtenir votre rétroviseur consiste alors à ouvrir VLC, "Open Network Stream" et pointez-le sur http: // localhost: 8081 .

0
Derek

Camorama est un visualiseur/enregistreur de webcam avec lequel je prends des photos toutes les minutes et les télécharge sur un serveur Web à partir de ma webcam. c'est une configuration simple. En outre, il est disponible dans le Centre de logiciel Ubuntu ou vous pouvez l'installer à l'aide de:

Sudo apt-get install camorama

J'espère que cela t'aides.

0
kicsyromy

Une option rapide, sale, mais un peu plus flexible est la suivante:

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

Ici, j'ajoute -pattern_type glob, en utilisant le caractère générique * et en mettant mon nom de fichier entre guillemets: 'image-*.jpg'.

L'avantage: Cette syntaxe vous permet de commencer à n’importe quel nombre et d’avoir un motif quelconque dans votre numérotation (je crée souvent un compte par 20, à partir de 20 000 environ). Exemple).

Les inconvénients: Cette syntaxe ne vous permet pas d'ignorer les chiffres répétés comme le permet la syntaxe '% ## d'. En outre, vous ne pouvez pas avoir de schéma de numérotation sans les 0 précédents. C'est-à-dire que le schéma de nommage des fichiers doit être quelque chose comme 00001, 00002, ... 00033 ... (la numérotation ne peut pas être 1,2,3, ... 33, ..., sinon le nombre "3" sera trié entre '39' et '40' par exemple).

Séparément, notez également que je devais mettre mon nom de fichier d'entrée entre guillemets, sinon ffmpeg essaierait d'écraser tous mes fichiers image avec une copie de la première image (il est toujours bon de copier pour une sauvegarde avant de manipuler des fichiers. ).

De cette modification par un utilisateur anonyme.

0
Tim