Inhoudsopgave:

Een time-lapse-video maken: 7 stappen
Een time-lapse-video maken: 7 stappen

Video: Een time-lapse-video maken: 7 stappen

Video: Een time-lapse-video maken: 7 stappen
Video: MUURTJE STUCEN IN 7 STAPPEN! - Knauf Doe-Het-Zelf 2024, Juli-
Anonim
Image
Image

In deze Instructable zal ik de stappen beschrijven die ik gebruik om een time-lapse-video te maken. Het systeem en de hardware die ik gebruik voor het verkrijgen van de beelden is een Linux-computer en een netwerkgebaseerde IP-camera. Er wordt een script uitgevoerd op de Linux-computer en elke x seconden peilt het de IP-camera, pakt een afbeelding, verkleint het formaat, tijd- en datumstempels en slaat het op de harde schijf van de computer op. Om de video van de afbeeldingen te maken, zal ik twee verschillende freeware-applicaties op een Windows-pc behandelen en kijken naar het gebruik van Linux als een optie.

Bij het verkrijgen van afbeeldingen moet u de tijd tussen elke afbeelding berekenen, of hoeveel afbeeldingen per uur of dag u nodig heeft om een video te maken die er goed uitziet en niet te lang of te kort is.

In het geval van mijn ice-off video. Ik nam elke 20 seconden een foto van net voor zonsopgang op de eerste dag en ging de volgende dag door tot zonsondergang. Ik heb de meeste nachtbeelden verwijderd voordat ik ze in de video verwerkte, maar besloot om een "maanstijging" te behouden

Dit laat me met ongeveer 4.430 afbeeldingen. Als ik de video produceer met 25 frames per seconde, is de lengte:

4, 430 / 25 = 177,2 seconden lang. 177,2 seconden is bijna 3 minuten.

Als je iets wilt vastleggen zoals een huis dat wordt gebouwd, dan zou elke 3 tot 5 minuten een goed begin zijn.

Afhankelijk van hoe vaak en hoe lang ik afbeeldingen moet vastleggen, gebruik ik er een voor twee verschillende methoden.

Stap 1: Afbeeldingen van een IP-camera

Afbeeldingen van een IP-camera
Afbeeldingen van een IP-camera

Met de meeste IP-camera's die worden gebruikt voor videobewaking of voor full-motion webcams, kunt u een stilstaand jpg-beeld bekijken via een webbrowser. Deze IP-camera's hebben daarom ingebouwde webservers en we zullen deze gebruiken om het stilstaande jpg-beeld vast te leggen. Met een Ubiquiti camera kun je bijvoorbeeld een afbeelding bekijken via:

"https:///snap.jpg"

Voor een Planet-camera:

"https:///image.cgi?resolution=1920x1080"

U moet de url googlen die u voor uw merk camera wilt gebruiken.

Zowel de Ubiquiti- als de Planet-afbeeldingen die ik maak, zijn 1920x1080 groot (standaard voor elke camera aangezien het 1080 camera's zijn). Met dit formaat krijg je een enorme hoeveelheid data en een enorm videobestand. Ik vind het leuk om het formaat van de afbeelding te wijzigen terwijl ik hem pak en naar schijf schrijf en ik zal deze stap in mijn script laten zien. Ik gebruik convert dat deel uitmaakt van de ImageMagick-tools.

Stap 2: Afbeeldingen vastleggen - Methode 1

Afbeeldingen vastleggen - Methode 1
Afbeeldingen vastleggen - Methode 1
Afbeeldingen vastleggen - Methode 1
Afbeeldingen vastleggen - Methode 1

Ik gebruik deze methode om kortere gebeurtenissen zoals ijsvorming vast te leggen. Je zou deze methode kunnen gebruiken om iets als een verhuizing en het opzetten van een evenement vast te leggen - iets dat een paar uur of 1 of 2 dagen duurt en waarbij je ongewenste afbeeldingen zoals 's nachts handmatig kunt verwijderen voordat je het in een video verwerkt

Onder Linux ziet een script voor mijn Ubiquiti-camera er als volgt uit:

#!/bin/bash

# ga naar de juiste map

cd /home/steve/iceoff

# Ubiquiti - ubnt camera

URL="https://192.168.2.114/snap.jpg"

# waar afbeeldingen te schrijven

ubnt_dir=/home/steve/iceoff/ubnt

# vertraging tussen afbeeldingen

vertraging=20

# de lus

terwijl het waar is

# gebruik de tijd/datum om de bestandsnaam te stempelen - dit moet in de lussectie staan

nu=$(/bin/date '+%Y%m%d%H%M%S')

# haal de afbeelding op en schrijf deze als ubnt.jpg

/usr/bin/wget -q -O "$ubnt_dir/ubnt.jpg" -t 1 $URL

# verklein de ubnt.jpg-afbeelding en schrijf deze naar schijf met behulp van de datum/tijd-indeling voor de bestandsnaam

convert -geometry 1024x "$ubnt_dir/ubnt.jpg" "$ubnt_dir/${now}.jpg"

# slaap voor de vertragingstijd en krijg dan een andere afbeelding

/bin/sleep "$vertraging"

gedaan

Wat het script doet:

stel een variabele URL in naar waar de afbeelding zich op het netwerk/de camera bevindt

stel de variabele ubnt_dir in op waar we afbeeldingen willen opslaan (u moet de map maken voordat u het script uitvoert)

stel de variabele vertraging in op hoeveel seconden tussen afbeeldingen - dit maakt het gemakkelijk om de tijd tussen afbeeldingen te wijzigen, verander gewoon deze variabele en voer het script opnieuw uit

start een lus met while true do - deze lussen zouden moeten doorgaan totdat je het script stopt met een ctrl-c

stel de variabele nu in als het jaar, de maand, de dag, het uur, de seconde

16 februari 2019 om 8 minuten en 29 seconden na 13.00 uur zou eruitzien als 20190216130829

gebruik wget om een afbeelding uit de URL te halen en deze als ubnt-j.webp

converteer de afbeelding ubnt-j.webp

slaap voor het aantal seconden in de vertragingsvariabele

ga terug en begin bij de while true do step

Om dit script uit te voeren, log ik in op mijn account en voer ik het uit vanaf de terminal - dus dit is goed voor het vastleggen van zoiets als de ijsafzetting van een meer - het is binnen een dag of twee klaar en ik heb elke 20 seconden een afbeelding nodig.

Stap 3: Afbeeldingen vastleggen - Methode 2

Afbeeldingen vastleggen - methode 2
Afbeeldingen vastleggen - methode 2

Voor langere time-lapses, zoals de bouw van een gebouw of een jaar lang time-lapse-project, gebruik ik een andere manier om beelden vast te leggen. Hiervoor gebruik ik cron.

Cron is een hulpprogramma dat eens in de x minuten, uren, dagen of maanden een opdracht uitvoert. U kunt dus aanpassen wanneer de opdracht wordt uitgevoerd per minuut, uur, dag, dag van de maand, enz. Een gebruiker in een Linux-systeem kan zijn eigen cron-taak hebben en deze wordt bewaard in zijn crontab-bestand.

Voor een time-lapse die maanden duurt, waarbij ik elke X minuten een afbeelding krijg, gebruik ik een cron-taak en een iets ander script omdat er geen lus voor nodig is (terwijl het waar is en gedaan) omdat cron het script elke keer zal aanroepen X aantal minuten.

Je kunt het niet alleen gebruiken om het script elke X minuten uit te voeren, maar je kunt het ook tussen bepaalde uren laten draaien, zodat je niet veel nachtbeelden hoeft te verwijderen. Naarmate het seizoen en de daglichturen veranderen, verander ik mijn cron-taak om het weer te geven.

Om een cron-taak aan te maken, logt u in op uw Linux-server en voert u het volgende uit: crontab -e Dit zal een bewerking van uw crontab starten. Mijn crontab-bestand heeft een regel als deze:

*/5 4-23 * * * /home/steve/timelapse/get.ubnt >/dev/null 2>&1

De */5 betekent elke 5 minuten rennen

De 4-23 betekent dat het van 04:00 tot 23:00 uur wordt uitgevoerd (dit verandert voor mij met het seizoen)

De eerste * betekent dat het elke dag van de maand wordt uitgevoerd

De tweede * betekent dat het elke maand van het jaar wordt uitgevoerd

De derde * betekent dat het elke dag van de week moet worden uitgevoerd

/home/steve/timelapse/get.ubnt is de scriptnaam die wordt uitgevoerd

/dev/null 2>&1 betekent zet standaarduitvoer op null en eventuele fouten op null - als je dit niet hebt, ontvang je elke keer dat de cron-taak wordt uitgevoerd een e-mail.

Mijn script /usr/steve/timelapse/get.ubnt ziet er als volgt uit:

#!/bin/bash

cd /home/steve/timelapse

URL="https://192.168.2.114/snap.jpg"

nu=$(/bin/date '+%Y%m%d%H%M%S')

/usr/bin/wget -q -O ubnt-j.webp

convert -geometry 1024x ubnt-j.webp" />

Wat dit script doet:

verander naar /home/steve/timelapse

stel een variabele URL in naar waar de afbeelding zich op het netwerk/de camera bevindt

stel de variabele nu in op jaar, maand, dag, uur, minuut, seconde (zodat we de uiteindelijke jpg-afbeelding later kunnen timen/datumstempelen)

haal de afbeelding uit de URL en schrijf deze uit naar ubnt.jpg

verklein de afbeelding naar 1024 pixels breed en houd de juiste verhouding aan en schrijf het bestand als een datum/tijd-stempel.

Net als bij de vorige methode/script zal hij de bestandsnamen opeenvolgend maken en ons in staat stellen om de video te maken met de frames in de juiste volgorde. Nadat ik een paar dagen aan afbeeldingen heb, zal ik ze naar een map op mijn Windows-pc kopiëren om het videobestand te maken. Ik gebruik normaal gesproken ftp om de bestanden op de Windows-pc te krijgen, omdat ze zich op hetzelfde netwerk bevinden en de login/het wachtwoord als duidelijke tekst niet zichtbaar is op internet.

Stap 4: Kopieer de afbeeldingen naar een Windows-pc

Om de afbeeldingen van het Linux-systeem naar een Windows-pc te kopiëren voor verwerking tot een video, gebruik ik FTP.

Het Windows-programma dat ik hiervoor gebruik is FileZilla Client. U kunt elke gewenste ftp-client gebruiken, zelfs de opdrachtregelversie in Windows.

Als je weet wat je doet, kun je ook Samba of NFS gebruiken en de Linux-bestanden als een map in Windows laten verschijnen.

Stap 5: De video maken - Photolapse 3

De video maken - Photolapse 3
De video maken - Photolapse 3
De video maken - Photolapse 3
De video maken - Photolapse 3
De video maken - Photolapse 3
De video maken - Photolapse 3

Nu we de afbeeldingen hebben, moeten we ze samenvoegen om een videobestand te maken.

Er zijn veel programma's die u hiervoor kunt gebruiken en misschien wilt u met verschillende programma's experimenteren.

Maar voor een relatief klein aantal foto's zoals ik die tijdens de een of twee dagen ijsvrij maak, gebruik ik het Windows-programma Photolapse 3 - dat helaas niet meer wordt bijgewerkt en ik kan de originele website ervoor niet meer vinden. Het is echter wel beschikbaar op een aantal "download"-sites. Een snelle google-zoekopdracht zou goed moeten zijn.

Wat leuk is/was aan dit programma, is dat het een enkel binair bestand is, dus er is geen installatie. Download gewoon het binaire bestand en voer het uit. Het nadeel is dat het niet een groot aantal bestanden zal verwerken. Met enorm bedoel ik waarschijnlijk 20 duizend of meer, maar voor zoiets als mijn ijskoude video met ongeveer 5.000 afbeeldingen is het prima.

Je start het programma, gaat in het vak linksboven naar beneden of zoekt waar je afbeeldingen zijn opgeslagen, en voert vervolgens het aantal framers per seconde in (een kleiner aantal zorgt ervoor dat de video in slow motion verschijnt). Klik vervolgens op de knop "Bestanden laden uit huidige map"

Photolapse laadt en bekijkt elk frame en je krijgt een idee van hoe de video eruit zal zien.

Wanneer de hele map is verwerkt, klikt u op de knop "Film maken", wijzigt u de bestandsnaam als u dat wilt en klikt u vervolgens op "Opslaan".

Vervolgens moet je een compressiemethode voor de video kiezen of deze ongecomprimeerd laten. Ik gebruik "Microsoft Video 1". U hoeft alleen nog maar op "OK" te klikken

Hoewel je alle stappen opnieuw moet doorlopen om een andere compressiemethode of codec te kiezen, is het de moeite waard om hier verschillende instellingen te proberen als je de video gecomprimeerd wilt hebben.

De afbeeldingen die ik heb gebruikt voor de schermafbeeldingen in deze stap, waren enkele van de originele ice-off-afbeeldingen. Ik gebruikte 1191 afbeeldingen van 1024x576 pixels. Ze namen ongeveer 110 MB schijfruimte in beslag. De gecomprimeerde video was 235 MB groot en de niet-gecomprimeerde video was 1,96 GB

Stap 6: De video maken - VirtualDub

De video maken - VirtualDub
De video maken - VirtualDub
De video maken - VirtualDub
De video maken - VirtualDub
De video maken - VirtualDub
De video maken - VirtualDub

Het andere programma dat ik heb gebruikt is VirtualDub

Download hier de zip-bestanden. Er is een 32-bits en 64-bits versie

Pak de bestanden uit in hun eigen map.

Een van de dingen die u met uw afbeeldingen moet doen, is ze opeenvolgend opnieuw te nummeren. Het gebruik van de datum-/tijdstempelbestandsnamen zoals mijn scripts maken, werkt niet met VirtualDub. Er zijn een aantal manieren om de bestanden te hernummeren:

Maak eerst een back-up van uw bestanden en vervolgens nog een back-up. Gebruik dan het tweede exemplaar:

Open de map met de afbeeldingen, verander de weergave naar "details", markeer het eerste bestand in de lijst, druk op ctrl-a om alle bestanden te selecteren, klik met de rechtermuisknop en selecteer "hernoemen". Verander de bestandsnaam in 1 en druk op enter.

Dit zal de lijst met bestanden verwerken en (1).jpg, dan (2)-j.webp

De tweede manier is om een programma genaamd Irfanview te gebruiken. Het heeft een batchmodus waarin u de bestanden achtereenvolgens kunt hernoemen als 1.jpg, 2.jpg, 3-j.webp

Zodra de bestanden zijn hernoemd, start u VirtualDub, klikt u op "bestand" en vervolgens op "videobestand openen". Selecteer de eerste-j.webp

Klik op "Video" en vervolgens op "Frame Rate" verander dit in 30 (of welke framesnelheid je ook wilt proberen)

Klik op "Video" en vervolgens op "Compressie" - zoals bij photolapse 3 heb ik "Microsoft video 1" gebruikt

Om te beginnen met het verwerken van de afbeeldingen, klikt u op "Bestand" en vervolgens op "Opslaan als AVI". Geef het bestand een naam en klik vervolgens op "Opslaan"

Dit zal de verwerking starten en laten zien hoe lang het zal duren.

Hoewel er meer stappen zijn bij het gebruik van VirtualDub, zal het meer bestanden verwerken dan Photolapse 3.

Ik heb een timelapse gemaakt met meer dan 88.000 afbeeldingen met behulp van VirtualDub.

Stap 7: Conclusie

Om de timelapse-video's te bekijken, kunt u een programma zoals VLC of de eigen mediaspeler van Windows gebruiken.

Er zijn heel veel manieren om beelden vast te leggen en een timelapse te maken.

Als je een Canon-camera hebt, is er voor sommige modellen firmware CHDK van derden waarmee je de camera in de intervalometermodus kunt gebruiken en elke x seconden een foto kunt maken.

Experimenteer veel! Ik hoop dat je deze Instructable interessant vond en als je een timelapse maakt, laat dan een link achter in de reacties.

Aanbevolen: