Tag Archives: mencoder

Enkelt övervakningssystem och linux

För längesen satt jag och labbade lite grann med AXIS Nätverkskameror och hur man kan spela in automatiskt med dem.

Jag försökte använda mig av bash och andra linux/gnu-kommando som jag bara kunde för att få systemet uppe och rulla.

Hur fungerar det?
Lösningen är väldigt enkel. Som första program ligger där ett script som väntar på ett tcp-meddelande som kommer in på port 31337 (nördigt va) och som därefter startar en nedladdning av en motion jpeg-ström som hålls vid liv i 5 sekunder per trigger som kommer från kameran. Det vill säga, får man samma larm under en pågående nedladdning av strömmen så läggs fem nya sekunder på innan man stänger strömmen.

Hur ställer jag in det?
Event Server SetupEvent setupBörja med att gå in i din kamera och skapa ett Motion Detection fönster. Därefter går du in till Event Servers och skapar din TCP-server med dina anslutningsinställningar. Glöm inte att porten skall vara 31337. När servern har satts upp, skapar du ett event som triggar på det motion detection-fönster som du skapat. Lägger till att det skall gå till tcp-servern du skapat och att det ska trigga ungefär 30 gånger per minut som eventet är igång. Detta gör att så länge något rör sig så hålls strömmen vid liv.

Som du säkert ser så är meddelandet en MAC-adress som är specific för varje enhet. Du måste givetvis inte döpa dina filer efter MAC-adressen men jag gjorde det för enkelhetens skull. Se bara till att du inte använder mellanrum i namnet.

Nästa steg är att installera filerna som är skapade på en lämplig plats. Låt säga att vi skapar det under en egen användare som vi döper till “security”. Vi lägger filerna i hemmappen, packar upp och skapar mappar.
/home/security:$ tar xvf supersimpleNVR.tar.gz
/home/security:$ cd supersimpleNVR/
/home/security:$ mkdir settings && mkdir captures && mkdir captures/tmp && captures/processed_captures && tmp

Det du ska göra nu är att gå in i settings mappen och skapa en fil som heter precis det meddelandet som du angett i ditt event i kameran och med filändelsen .sh. I mitt fall blir det 00408C630000.sh

I denna skall innehålla:

  1. #!/bin/sh
  2. user=root
  3. pass=pass
  4. fps=5
  5. ip=192.168.1.15
  6. port=80

Ändra allting så att det passar med dina inställningar och behov. Glöm inte att filen måste finnas i mappen som heter settings.

Mappen captures innehåller alla dina inspelningar och mappen captures/tmp används för att extrahera bilddata i sparade strömmar.

Vad ska jag med mappen captures/tmp till?
Mjpg kan ställa till det när det gäller lagring. Därför finns scriptet “creatempeg” som skapar mpeg4-filer av nedladdningarna. Detta script använder ett C#-program som klipper ur bilderna ur strömmen och skapar jpg-filer utav dem.

Vanliga tmp då?
Den gör inget speciellt mer än sparar tidsstämplar för att veta när en ström startades.

Vad behöver jag för program?
Du behöver bara standardprogram för att kunna spela in.

Du behöver:

  1. Netcat
  2. Curl
  3. Mono
  4. mencoder

Begränsningar för närvarande!
För närvarande kommer filmer som konverteras till mpeg4 alltid gå skapa filer med 5fps, oavsett vad du laddat ner i. Fixa detta själv genom att sätta den fps du önskar.

Hur startar jag det?
Du startar det lättast genom att starta filen nc med screen:
/home/security/reallysimpleNVR/:$ screen sh nc
/home/security/reallysimpleNVR/:$ [ CTRL + A + D ]

Ladda ner källkoden här: reallysimpleNVR.tar

Har inte testat det på länge, och det kan hända att den måste modifieras något. Speciellt c#-koden. Använd på egen risk 🙂

Ha en bra kväll
/marcus