Wie erstelle ich ein Stop-Motion- oder Zeitraffer-Video mit einer Webcam?

28

Ich habe eine Webcam, die als v4l2-Gerät funktioniert.

Was ist der bequemste Weg, um ein Stop-Motion- oder ein Zeitraffer- Video aufzunehmen?

NB

Stop-Motion und Zeitraffer sind verwandt, aber konzeptionell unterschiedlich.

In Zeitraffer machst du ein Foto von einer Szene in einem festgelegten Intervall und kombinierst es dann zu einem Video (das sieht so aus, als würde es sehr schnell gehen).

In Stop-Motion steuern Sie die Szene und nehmen für jede vorgenommene Änderung ein Bild auf, um eine Animation zu erstellen (z. B. Wallace und Grommit).

Eine Anwendung für Zeitraffer muss in der Lage sein, in einem festgelegten Intervall ein Foto aufzunehmen.

Seppo Erviälä
quelle
Ähnliche Frage in Fotos hat interessante Antworten, die sich teilweise überschneiden.
Anarcat

Antworten:

40

Millionen von Bildern aufnehmen.

Der erste Schritt ist die Aufnahme von Bildern. Stellen Sie sich vor, Sie möchten alle 10 Sekunden ein Foto aufnehmen und dieses in einem Verzeichnis auf Ihrem Desktop speichern

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

Wir verwenden streamer, um das Capture zu machen, also installieren wir es:

sudo apt-get install streamer

Und jetzt wollen wir einfangen

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

-tist die Anzahl der Frames, die erfasst werden sollen. -rist Bilder pro Sekunde. Das sollte also einen Frame pro Sekunde erfassen. Wenn Sie das zu einem 30-fps-Video komprimieren, wird eine Minute Aufnahme zu 2 Sekunden Video. Je nachdem, wie viel Video Sie ausgeben möchten, sollten Sie dies entsprechend abstimmen.

Diese Zeile liefert 2000 Bilder, die Aufnahme dauert eine halbe Stunde und erzeugt mit 30 Bildern pro Sekunde etwas mehr als eine Minute Video.

Alles zusammen

Ich werde verwenden ffmpeg. Es gibt viele verschiedene Arten, es zusammenzustellen, mencoderaber ich bevorzuge nur die ffmpegLebenseinstellung. Nach der Installation von it ( sudo apt-get install ffmpeg) haben Sie Folgendes herausgespielt:

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

Die Qualitätseinstellungen dort sind nicht mit denen meiner Webcam vergleichbar. Vielleicht möchten Sie mit den Optionen viel mehr herumspielen, um eine bessere Codierung zu erzielen, aber das sollte Ihnen ein nettes 30-fps-Video generieren, das in x264 komprimiert ist.

Vielleicht möchten Sie mit der Framerate ( -r) herumspielen, aber ich würde nicht unter 15fps gehen.

Oli
quelle
1
Alle zehn Sekunden würde brauchen -r 0.1.
Seppo Erviälä
man streamerbeschreibt nicht, was jeder Parameter tut. Wo kann ich Informationen über jParameter erhalten? Wie kann ich es erfassen, bis ich STRG + C drücke, mit vorgegebenen FPS?
Tomáš Zato - Wiedereinsetzung von Monica am
@oli ffmpegfunktioniert bei mir nicht mehr. Was soll ich benutzen?
Tim
1
@ ChrisH Es ist technisch in Ordnung, ich meine nur, das ist der grundlegende Cutoff für flüssige Videos. Das hängt jedoch weitgehend davon ab, wie schnell Sie sie einnehmen.
Oli
2
@ TomášZato streamer -hist viel umfassender. Ich hasse es, wenn Entwickler sich viel Mühe geben, --helpaber nichts für die Manpage.
WasabiFlux
9

Verwenden Sie Bewegung, um alle X Sekunden einer Webcam zu erfassen.

Installieren motion

sudo apt-get install motion oder sudo aptitude install motion

Konfigurieren Sie die Bewegung für alle X Sekunden

sudo nano /etc/motion/motion.conf

Ändern Sie die Variablen minimum_frame_time und snapshot_interval auf die gleiche Anzahl von Sekunden, die Sie mit der Webcam aufnehmen möchten.

10 Minuten = 600 Sekunden
20 Minuten = 1200 Sekunden
30 Minuten = 1800 Sekunden
1 Stunde = 3600 Sekunden
2 Stunden = 7200 Sekunden und so weiter ...

bewegung mit sudo motionanhalten mit CTRL+ ausführenC

HINWEIS - Konfigurieren Sie motion.conf so, dass die Dateien in einem anderen Verzeichnis als dem Standardverzeichnis / tmp gespeichert werden. Zum Beispiel Ihren privaten Ordner. Da das Gehen zu / tmp mehr Privilegien erfordert. In der motion.conf finden Sie auch viele nützliche Optionen für viele andere Dinge, die Sie vielleicht mögen.

Luis Alvarado
quelle
Das ist weitaus besser als Streamer. Ich bin mir nicht sicher, ob ich eine Must-Have-Root-Lösung mag, und es scheint, als würde ich die Fähigkeit verlieren, sie wie einen Rückspiegel zu verwenden, aber sie ist weitaus besser als ein Streamer und könnte ein anderes Problem lösen, nach dem ich gesucht habe at, das macht nur ein Bild, wenn ich da bin. Werde dies als behoben markieren, wenn ich die anderen Probleme beheben kann.
Dave Jacoby
Eigentlich brauchen Sie keinen Root-Zugang, um es zu benutzen. Sie benötigen nur root-Zugriff, um die Konfigurationsdatei zu bearbeiten.
Luis Alvarado
Ich nehme an, wenn Sie in den Standardpfad schreiben möchten, ist dies möglicherweise auch erforderlich, aber das ist das erste, was ich geändert habe. Vielen Dank.
Dave Jacoby
Kein Problem, Kumpel. Froh, dass ich Helfen kann.
Luis Alvarado
Ich versuchte es. Es hat gut funktioniert. Ich könnte es irgendwann noch einmal versuchen. Aber es gab mir nicht den Aspekt der Rückansicht, den ich mehr schätze als das automatisierte Aufnehmen von Bildern. Also lasse ich gerade Käse laufen.
Dave Jacoby
7

gTimelapse ( Link zum Herunterladen )

Bildbeschreibung hier eingeben

Eine Anwendung zum Aufnehmen von Bildern zur Erzeugung von Zeitraffervideos, die auf den Bibliotheken gPhoto2 und wxWidgets basiert.

Anweisungen kompilieren

Laden Sie den Quellcode von der sourceforge-Website herunter

In einem Terminal geben Sie Folgendes ein:

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

So führen Sie den Anwendungstyp aus

gtimelapse &

nb 1

gphoto2 --list-cameras | more

nb 2

In diesem Blog finden Sie weitere nützliche Informationen

listet alle kompatiblen Geräte auf, die von der Anwendung unterstützt werden

nb 3

Ich habe gelesen, dass gphoto2 keine Webcams unterstützt - ich werde diese Antwort trotzdem sichtbar lassen, nur für den Fall, dass jemand diese Antwort mit einer anständigen Digitalkamera anstelle einer Webcam ausprobieren möchte.

fossfreedom
quelle
Es hat einige Zeit gedauert, um wxWidgets mit allen Voraussetzungen abzurufen und zu kompilieren. Ich habe auch gTimelapse kompiliert, aber es stürzt ab mit: [Debug] 13:21:12: ./src/common/menucmn.cpp(859): "item" in Check (): wxMenu :: Check: no such item [Debug] Stack-Trace wird generiert ... Bitte wartenTrace / Breakpoint-Trap
Seppo Erviälä
ok - ich werde heute irgendwann versuchen, mich selbst zu bauen - ich werde meiner Antwort einige Anweisungen hinzufügen (vorausgesetzt, ich kann dies selbst bauen lassen).
fossfreedom
Dies ist sehr hilfreich, da ich eine Digitalkamera habe, die von gphoto2 unterstützt wird. Ich wusste nicht, dass es eine solche Bibliothek gibt.
Seppo Erviälä
1

Ich habe Stopmotion verwendet, um dies zu tun, es befindet sich im Software-Center. Sie können auch mit Cheese aufnehmen, müssen jedoch die Konfiguration von Cheese ändern, um die maximale Anzahl von Bildern zu erhöhen. Ich fand es am einfachsten, Stopmotion für den gesamten Prozess zu verwenden.

Tom Brossman
quelle
1

Der beste und einfachste Weg, dies zu tun, ist die Installation von Motion . Es ist eine umfassende Überwachungssoftware für Linux-basierte Betriebssysteme.

Installation über das Software Center

Vesa
quelle
1

Eine schnelle, schmutzige, aber etwas flexiblere Option ist wie folgt:

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

Hier bin ich das Hinzufügen -pattern_type glob, den Platzhalter verwenden *, und setzen meine Dateinamen in einfache Anführungszeichen: 'image-*.jpg'.

Der Vorteil: Diese Syntax ermöglicht es Ihnen, bei einer beliebigen Nummer zu beginnen und ein beliebiges Muster in Ihrer Nummerierung zu haben (ich erstelle häufig eine Anzahl von 20, beginnend beispielsweise bei 20000).

Die Nachteile: Mit dieser Syntax können Sie keine sich wiederholenden Zahlen überspringen, wie es die Syntax '% ## d' zulässt. Sie können auch kein Nummerierungsschema ohne vorangestellte 0s haben. Das heißt, das Dateinamensschema muss etwa 00001, 00002, ... 00033 ... lauten (die Nummerierung darf nicht 1,2,3, ... 33, ... lauten, sonst wird die Nummer '3' sortiert '39' und '40' zum Beispiel).

Beachten Sie auch, dass ich den Namen meiner Eingabedatei in einfache Anführungszeichen setzen musste, da ffmpeg sonst versuchte, alle meine Bilddateien mit einer Kopie des ersten Bildes zu überschreiben (Es ist immer eine gute Idee, vor der Bearbeitung von Dateien eine Sicherungskopie zu erstellen ).

Von dieser Bearbeitung durch einen anonymen Benutzer.

Tim
quelle
0

Sie sollten in der Lage sein, motion (in motion.conf) für das Streaming einzurichten. Standardmäßig erfolgt das Streaming über Port 8081. Sie müssen dann nur noch VLC, "Open Network Stream" und "Open Network Stream" öffnen, um Ihren "Rückspiegel" zu erhalten Zeigen Sie auf http: // localhost: 8081 .

Derek
quelle
0

Camorama ist ein Webcam-Viewer / -Recorder, mit dem ich in Abständen von 1 Minute Bilder von meiner Webcam auf einen Webserver hochgeladen habe. Es ist eine einfache Einrichtung. Es ist auch im Ubuntu Software Center verfügbar oder kann folgendermaßen installiert werden:

sudo apt-get install camorama

Hoffe das hilft.

kicsyromy
quelle
Sorry, habe gerade gesehen, dass du geschrieben hast, dass deine Webcam mit Camorama nicht funktioniert.
kicsyromy
Könnten Sie das bitte näher erläutern? Mann deckt nicht Zeitraffer-Option :(
Mars Robertson