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

28

J'ai une webcam qui fonctionne comme un appareil v4l2.

Quelle est la façon la plus pratique de capturer une vidéo en stop-motion ou en time-lapse ?

NB

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

Le time-lapse est l'endroit où vous prenez une photo d'une scène à un intervalle défini, puis la combinez dans 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, pour former une animation (par exemple Wallace et Grommit).

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

Seppo Erviälä
la source
Une question similaire dans Photos a des réponses intéressantes qui se chevauchent en partie.
anarcat

Réponses:

40

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 streamerpour faire la capture alors installons-le:

sudo apt-get install streamer

Et maintenant, nous voulons capturer

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

-test le nombre d'images que nous voulons capturer. -rest d'images par seconde. Donc, cela devrait saisir une image par 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 en fonction de la quantité de vidéo que vous souhaitez.

Cette ligne vous donnera 2000 images, il faudra 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, mencodermais je préfère simplement ffmpegla vision de la vie. Après l'avoir installé ( sudo apt-get install ffmpeg), il suffit de remarquer ceci:

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

Les paramètres de qualité ne ressemblent pas à 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 de 30 images par seconde, compressée en x264.

Vous voudrez peut-être jouer avec le framerate ( -r) mais je ne descendrais pas en dessous de 15fps.

Oli
la source
1
Il faudrait toutes les dix secondes -r 0.1.
Seppo Erviälä
man streamerne décrit pas ce que fait chaque paramètre. Où puis-je obtenir des informations sur les jparamètres? Comment pourrais-je le capturer jusqu'à ce que j'appuie sur CTRL + C, avec un FPS donné?
Tomáš Zato - Rétablir Monica
@oli ffmpegne fonctionne plus pour moi. Que dois-je utiliser?
Tim
1
@ChrisH C'est techniquement bien, je veux juste dire que c'est la coupure de base pour une vidéo fluide. Cela dépend en grande partie de la rapidité avec laquelle vous les prenez.
Oli
2
@ TomášZato streamer -hest beaucoup plus complet. Je déteste que les développeurs déploient beaucoup d'efforts, --helpmais rien pour la page de manuel.
WasabiFlux
9

Pour capturer chaque X quantité de secondes à partir d'une webcam, utilisez le mouvement.

Installer motion

sudo apt-get install motion ou sudo aptitude install motion

Configurer le mouvement pour toutes les X secondes

sudo nano /etc/motion/motion.conf

Modifiez les variables minimum_frame_time et snapshot_interval au 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 l' sudo motionarrê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 a besoin de plus de privilèges. Vous trouverez également de nombreuses options utiles dans le motion.conf pour de nombreuses autres choses que vous pourriez aimer.

Luis Alvarado
la source
C'est bien mieux que le streamer. Je ne suis pas sûr que j'aime une solution indispensable, et il semble que je perds la capacité de l'utiliser comme un rétroviseur, mais c'est bien mieux que le streamer, et pourrait résoudre un autre problème que je voulais regarder à, qui ne prend une photo que si je suis là. Marquera cela comme résolu si je peux résoudre les autres problèmes.
Dave Jacoby
En fait, vous n'avez pas besoin d'un accès root pour l'utiliser. Vous n'avez besoin que d'un accès root pour modifier le fichier de configuration.
Luis Alvarado
Je suppose que si vous voulez écrire dans le chemin par défaut, cela pourrait être nécessaire aussi, mais c'est la première chose que j'ai changé. Merci.
Dave Jacoby
Pas de problème mon pote. Heureux de vous aider.
Luis Alvarado
Je l'ai essayé. Cela a bien fonctionné. Je pourrais essayer à nouveau à un moment donné. Mais cela ne m'a pas donné l'aspect de la vue arrière, que j'apprécie plus que la prise de vue automatisée. Donc, je dirige Cheese en ce moment.
Dave Jacoby
7

gTimelapse ( lien de téléchargement )

entrez la description de l'image ici

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

Compiler les instructions

Téléchargez la source depuis le site Web de 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 ce blog pour plus d'informations utiles

répertorie tous les appareils compatibles pris en charge par l'application

nb 3

J'ai lu que gphoto2 ne prend pas en charge les webcams - je vais quand même laisser cette réponse visible au cas où quelqu'un voudrait essayer cette réponse avec un appareil photo numérique décent au lieu d'une webcam.

liberté libre
la source
Il a fallu un certain temps pour récupérer et compiler wxWidgets avec toutes les conditions préalables. J'ai également compilé gTimelapse mais il se bloque simplement avec: [Debug] 13:21:12: ./src/common/menucmn.cpp(859): l'assertion "item" a échoué dans Check (): wxMenu :: Check: aucun de ces éléments [Débogage] Génération d'une trace de pile ... veuillez patienterTrace / breakpoint trap
Seppo Erviälä
ok - je vais essayer de me construire moi-même aujourd'hui - j'ajouterai quelques instructions à ma réponse (en supposant que je peux moi-même le faire construire).
fossfreedom
C'est en fait très utile car j'ai un appareil photo numérique pris en charge par gphoto2. Je ne savais pas qu'une bibliothèque comme celle-ci existait.
Seppo Erviälä
1

J'ai utilisé Stopmotion pour 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 simplement Stopmotion pour l'ensemble du processus.

Tom Brossman
la source
1

Pour ce faire, le meilleur et le plus simple consiste à installer Motion . Il s'agit d'un logiciel de surveillance à grande échelle pour les systèmes d'exploitation Linux.

Installer via le centre logiciel

Vesa
la source
1

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 , je suis d' ajouter -pattern_type glob, en utilisant le caractère générique *, et mettre mon nom de fichier dans les citations simples: 'image-*.jpg'.

L'avantage: cette syntaxe vous permet de commencer à n'importe quel nombre et d'avoir n'importe quel modèle dans votre numérotation (je crée souvent un compte par 20, commençant autour de 20000 par exemple).

Les inconvénients: Cette syntaxe ne vous permet pas d'ignorer les chiffres répétitifs comme le permet la syntaxe '% ## d'. De plus, vous ne pouvez pas avoir de schéma de numérotation sans les 0 précédents. Autrement dit, le schéma de dénomination 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 j'ai dû mettre mon nom de fichier d'entrée entre guillemets simples, sinon ffmpeg a essayé de remplacer tous mes fichiers image par une copie de la première image (c'est toujours une bonne idée de copier pour une sauvegarde avant de manipuler des fichiers ).

De cette modification par un utilisateur anonyme.

Tim
la source
0

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 miroir de «vue arrière» est d'ouvrir VLC, «Open Network Stream» et pointez-le sur http: // localhost: 8081 .

Derek
la source
0

Camorama est une visionneuse / enregistreuse de webcam que j'ai utilisée pour prendre des photos, à des intervalles d'une minute et les télécharger sur un serveur Web, à partir de ma webcam; c'est une configuration simple. Il est également disponible dans le Centre logiciel Ubuntu ou vous pouvez l'installer en utilisant:

sudo apt-get install camorama

J'espère que cela t'aides.

kicsyromy
la source
Désolé, je viens de voir que vous aviez écrit que votre webcam ne fonctionne pas avec Camorama.
kicsyromy
Pourriez-vous s'il vous plaît expliquer plus en détail? L'homme ne couvre pas l'option timelapse :(
Mars Robertson