• No results found

6. Resultat ____________________________________________________ 40

6.2 Grafiskt gränssnitt

I avsnitt 5.1 går det följa utvecklingen utav det grafiska gränssnittet och de

Figur 50 visar inställningsfliken i programmet.

Det första användaren kommer i kontakt med i programmet är inställningsmenyn i figur 50. Användaren har möjlighet att välja vart videoklippen skall sparas, fylla i korrekt ip-adress till videoservrarna, före- och eftertriggtid. Vill användaren fylla i formuläret på nytt finns en återställningsknapp.

Figur 51 visar inspelningsfliken i programmet.

Inspelningsfliken är den flik huvuddelen av programmet finns. Här startas videoströmningen från kamerorna samt inspelningarna och triggen. Knapparna i programmet är låsta i ett seriemönster där det inte går att starta ett nytt moment innan ett annat är utfört. När en inspelning är färdig kan användaren skapa ett videoklipp med enkodknappen som då genereras i den mapp användaren tidigare valt.

Figur 52 visar uppspelningsfliken i programmet.

En av nackdelarna med ffmpeg var som tidigare nämnts den tid det tar att koda videoklippen. För att snabbt få en förhandsvisning av det inspelade resultatet användes avisynth. Användaren kan granska inspelningen i uppspelningsfliken där det även är möjligt att stega bild för bild med bildstegarknappen (Step Frame>).

7. Diskussion och slutsatser

Innan projektets start hade vi inga tidigare erfarenheter av videoservrar och dess funktionalitet. Genom att genomföra en marknadsundersökning fick vi en bra inblick i dess funktioner och respektive för- och nackdelar. Eftersom vi skulle ta fram en egen lösning med hjälp av befintlig teknik var det av stor vikt att tillverkaren tillhandahöll en väldokumenterad SDK.

En förundersökning utfördes för att ta fram tre alternativ som vi ansåg uppfyllde de krav Saab AB hade ställt på videoservrarna. Efter genomförd

marknadsundersökning kom vi fram till att Axis Q7401 var den videoserver som lämpade sig bäst för projektet. Det som gjorde att den stack ut ifrån de andra var en väldokumenterad och bred SDK samt activeX stödet som underlättade utvecklingen av det grafiska gränssnittet.

Våra tidigare erfarenheter av programmering är objektorienterad i form av java. Axis Q7401 innehåller stöd för C# vilket också är ett objektorienterat

programmeringsspråk. Tack vare detta kunde vi snabbt komma igång med utvecklingen av programvaran.

Då projektet löper under en begränsad tid sattes systemgränser upp. Saab AB hade satt upp ett antal systemkrav som de krävde att programmet skulle kunna utföra. Vi anser att de gränser och krav var rimligt ställda och att vi kunde uppfylla dessa under utsatt tid.

För att få en överblick av hur systemets hårdvarukomponenter skall vara kopplade gjorde vi en systemskiss. Identifiering av de olika fall användaren kräver illustreras i ett användarfallsdiagram. Användarfallsdiagram i vår storlek kan säkert ses som trivial men vi anser att det illustrerar användningen av programmet på ett tydligt sätt.

Ett uml-diagram togs fram för att få en idé om vilka klasser och metoder som programmet kan tänkas innehålla. Under projektets gång utökades diagrammet för att nya funktioner tillkom.

Då videoredigering inte inkluderades i Axis videoserver fick vi ganska tidigt i utvecklingen leta efter något alternativ. Från tidigare projekt har vi erfarenhet av ffmpeg som innehåller de videoredigeringsfunktioner det här projektet kräver. Problemet med ffmpeg är att det tar tid att koda ett färdigt videoklipp. Diskussion med handledare ledde till att vi fick leta upp alternativa lösningar för att på ett snabbare sätt kunna ge en videouppspelning.

En undersökning av programvaror ledde till programmet avisynth som är ett skriptbaserat program. Skriptfilerna innehåller endast länkar till befintliga

videoklipp och strömmar sedan dessa till mediaspelaren. Det medförde att vi kunde få en snabbare videouppspelning. Vi kunde dock inte förlita oss enbart till avisynth då den ej producerar ett videoklipp utan endast en skriptfil. Då ett av kraven var att få ett videoklipp som enkelt kan distribueras var vi tvungna att använda en

Problem som uppstått under projektets gång har varit implementationen av

markören. Videoservern hade inbyggt stöd för överlappning och positionering utav den överlappande bilden. Problemet som uppstod med den metoden var att vi inte kunde styra markören direkt via programmet utan endast genom videoserverns gränssnitt. Ett alternativt försök blev att försöka överlappa en bild direkt i

programmet och sedan lägga till det i videoklippet med ffmpeg. Det fungerade inte som vi hade tänkt då den överlappande bilden ej fick en transparent bakgrund. Nästa försök blev att med hjälp av C# inbyggda ritfunktioner rita upp en markör direkt på videofönstret. Försöket misslyckades då den uppritade markören hamnade bakom videofönstret och syntes därmed ej. Det avslutande försöket blev en oväntad lösning för oss då vi tog en etikett och ändrade dess utseende till markörens form. När markören väl var på plats uppstod det ett problem vid omskalning i

programmet. När videofönstret ändrade storlek behöll markören sin förbestämda storlek. Detta ledde till problem vid enkodningen då videofönstret med markören är nerskalat i programmet. Lösningen på problemet var att genom en lyssnare som känner av när fönstret ändrar storlek beräkna en skala som applicerades på markören.

Ett återkommande problem som uppstod under utvecklingen av programmet var krasch utav windows explorer när mappen innehållande videoklippet öppnades. Att det skedde tillsynes slumpmässigt försvårade detekteringen av problemet.

Undersökningar i Axis forum, sökningar på internet och windows loggbok ledde fram till att problemet låg i Axis egna dll (dynamic link library)-filer. Problemet åtgärdades genom att ta bort den dåliga dll-filen. Ytterliggare problem som uppstod var att det kunde ta tid vid anslutning mot videoservern eller att anslutning

misslyckades. Åtgärd som gjordes var att vi la till en funktion som stänger uppkopplingen när programmet avslutas. Tester för att avgöra effektiviteten av funktionen hann ej utföras och därför är vi inte säkra på om felet är helt löst. Vad vi har uppnått är ett prototypsystem som visar på möjligheterna med en videoserverlösning. Detta skulle innebära att systemet blir mer portabelt och därmed underlätta transport.

Då det är ett prototypsystem som ska visa på möjligheterna med videoservrar har endast grundläggande funktioner implementerats. Viss felhantering har lagts till i programmet men huvudfokus har legat på att visa möjligheter och ej ta fram en färdig produkt. Ett fåtal tester utfördes för att se vad som skulle ske om anslutning bryts från antingen kamera eller videoserver.

Ur ett ekonomiskt perspektiv innebär en videoserverlösning att Saab AB kan fortsätta använda befintliga kameror och kringutrustning. De befintliga kamerorna och kringutrustning är av god teknisk standard och har stora belopp investerade i sig. Genom att ej investera i nya kameror men samtidigt vidareutveckla systemet med videoservrar kommer Saab AB inte behöva göra några nya större

investeringar.

Utefter de krav som ställts på projektet anser vi att de uppfyllts. Eftersom det endast är en prototyp finns det rum för vidareutveckling av systemet.

Frågeställningen anses vara besvarade då vi visat att synkronisering av NTSC- och PAL är möjligt. Modernisering av det befintliga kamerasystemet med hjälp av videoservrar ser vi som mycket goda efter projektets genomförande.

8. Referenser

Litteratur:

[1] Bishop, Judith (2007) C# 3.0 Design Patterns. O’Reilly. Första upplagan. s. 5. ISBN 13:978-0-596-52773-0

[2] Fowler, Martin (2004) UML Distilled A brief guide to the standard object modelling language. Addison-Wesly. Tredje Upplagan. s. 1.ISBN 0-321-19368-7

[3] G. Salehi, Learning VirtualDub : The Complete Guide to Capturing, Processing and Encoding Digital Video. Olton Birmingham, GBR: Packt Publishing Ltd, 2005, p. 67.

Elektroniska källor:

[4] Avisynth. What is Avisynth. http://avisynth.org/mediawiki/Main_Page. Hämtad 29 Maj 2013.

[5] Axis. Axis Q7401 Encoder. http://www.axis.com/products/cam_q7401. Hämtad 27 Mars 2013.

[6] Axis. Axis Q7401 Encoder.

http://www.axis.com/files/datasheet/ds_q7401_46609_en_1202_lo.pdf. Hämtad 27 Mars 2013.

[7] Axis. Vapix.

http://www.axis.com/techsup/cam_servers/dev/cam_http_api_index.php. Hämtad den 6 maj 2013.

[8] Axis. Axis video encoder.

http://www.axis.com/files/brochure/bc_encoders_45682_en_1201_lo.pdf. Hämtad 3April 2013.

[9] Codeprojeckt. The Model-View-Controller (MVC) Pattern with

C#/WinForms. http://www.codeproject.com/Articles/383153/The-Model-View-Controller-MVC-Pattern-with-Csharp . Hämtad 3 April 2013. [10] Ffmpeg. About Ffmpeg. http://www.ffmpeg.org/about.html. Hämtad 29

Maj 2013.

[11] Grandstream. GXV3500 IP Video Encoder/Decoder.

http://www.grandstream.com/products/ip-video-surveillance/gxv3500. Hämtad 27 Mars 2013.

[12] Grandstream. GXV3500 IP Video Encoder/Decoder.

http://www.grandstream.com/products/surveillance/gxv3500/documents/gx v3500_spec_sheet.pdf. Hämtad 27 Mars 2013.

[13] Isel. NTSC, PAL and SECAM Overview.

http://www.deetc.isel.ipl.pt/Analisedesinai/sm/downloads/doc/ch08.pdf. Hämtad 3 April 2013.

[14] Scrum. The Scrum Guide.

http://www.scrum.org/Portals/0/Documents/Scrum%20Guides/Scrum_Gui de.pdf. Hämtad den 6 maj 2013.

[15] VRmagic. Frame Grabbers.

http://www.vrmagic.com/fileadmin/downloads/imaging/Camera_Datasheet s/Framegrabber/VRmDAVC-2_OEM.pdf. Hämtad 27 Mars 2013.

[16] VRmagic. Frame Grabbers. http://www.vrmagic.com/imaging/frame-grabbers. Hämtad 27 Mars 2013

[17] http://www.dustin.se/image/908889 [18] http://www.codeproject.com/KB/dialog/383153/mvc.PNG [19] http://www.agilemodeling.com/images/models/classDiagramInheritance.j pg [20] http://edenstrom.files.wordpress.com/2008/02/scrum.gif [21] http://www.toshibasecurity.com/pdf/_datasheets/IK-1000.pdf [22] http://www.axis.com/products/video/about_networkvideo/img/video_tran smission.gif

9. Bilagor

Bilaga 1: Teknisk specifikation för videoservrar

Bilaga 2: UML-Diagram

BILAGA 1 Teknisk specifikation för videoservrar

Tabell 1.1: Teknisk specifikation för GXV3500.[12] Videoenkoder

Videokomprimering H.264, MPEG-4, Motion JPEG

Upplösning & bildhastighet PAL 704x480 (25 fps) 640x480 (25 fps) 352x240 (25 fps) 320x240 (25 fps) 176x112 (25 fps) Upplösning & bildhastighet NTSC 704x480 (30 fps) 640x480 (30 fps) 352x240 (30 fps) 320x240 (30 fps) 176x112 (30 fps)

Videoströmning Avkodar standardupplösningar för PAL/NTSC kompositvideo eller mindre upplösningar. Avancerad multiströmningshastighet under realtid för H.264, Motion JPEG vid D1 upplösning.

Bithastighet video 16 Kbps (Kilobits per second) – 2Mbps (Megabits per second)

Bildinställningar -

Nätverk

Säkerhet Videovattenmärkning, HTTPS (Hypertext Transfer Protocol Secure), admin/anonym

Protokoll som stöds TCP/UDP/IP, RTP/RTCP, RTSP, DHCP, DDNS, HTTP, HTTPS, SMTP, FTP, NTP

Nätverksport 10M/100M automatisk avkänning, RJ45

Power over Ethernet (PoE)

IEEE 802.3 3af klass 0

SIP/VoIP stöd Ja, Röst & Video över IP

Allmänt

Videoingång BNC (Volt 1.0Vp-p, resistans 75)

Ljudingång 3,5mm MIC IN

Audio-/Videoutgång 3.5mm, 3-ben A/V kabel, TV-ljud & video utgång

Alarmingång Digital ingångsport. Normalt öppen (låg), Ström DC (likström) < 50mA. Volt < 45V för att aktivera

Alarmutgång Digital utgångsport. Normalt öppen, ström < 50mA. Volt < 80V.

Inbäddad analystik Rörelsedetektor (upp till 16

målområden), videoavbrott i avvaktan på.

Bildtagning Utlöses vid händelse, skickar via email/FTP

Multiströmningshastighet för förhandsgranskning & inspelning

Ja Mått (BreddxHöjdxLängd) 67x34x96 mm Vikt 121g Temperatur 0-45 C Luftfuktighet 10-90% Nätadapter Utgång 12V DC/0.5 A Ingång 100-240 VAC, 50/60 Hz

Pris (26-03-2013) 134,37 € inkl. Moms + 11 € frakt

Tabell 1.2: GXV3500 SDK [12]

Språk C++

Plattform Visual Studio

Fördelar: Nackdelar:

Demoprogram API är något bristfällig i beskrivningar Plugin för webb

PTZ support

Tabell 1.3: Teknisk specifikation för Axis Q7401.[6] Videoenkoder

Videokomprimering H.264, Motion JPEG

Upplösning 176x120 till 720x576

Bildhastighet H.264 30 NTSC, 25 PAL

Bildhastighet JPEG 30 NTSC, 25 PAL

Videoströmning Multiströmning H.264 och Motion JPEG: 3 samtidigt. Individuellt konfigurerbar strömning i maxupplösning vid 30/25 fps;

fler strömmar om identiska eller begränsad bildhastighet/upplösning.

Kontrollerbar bildhastighet och bandbredd VBR/CBR H.264

Bildinställningar Komprimering, färg, ljusstyrka, kontrast Rotation: 90°, 180°, 270°

Korrigering av bildförhållande Spegling av bilder

Text- och bildöverlägg Sekretess mask

Förbättrad deinterlace filter

PTZ Brett utbud av stöd för analoga PTZ-kameror

(drivrutiner tillgängliga för nedladdning på www.axis.com)

100 förinställningar, vaktturné, PTZ kontrollkö Stödjer Windowskompatibla joysticks

Nätverk

Säkerhet Lösenordsskydd, IP-adressfiltrering, HTTPS-kryptering, IEEE 802.1X-nätverksåtkomstkontroll, sammanfattad autentisering,

logg för användaråtkomst

Protokoll som stöds

IPv4/v6, HTTP, HTTPS, QoS layer 3 DiffServ, FTP, SMTP, Bonjour,

UPnP, SNMPv1/v2c/v3(MIB-II), DNS, DynDNS, NTP, RTSP, RTP,

TCP, UDP, IGMP, RTCP, ICMP, DHCP, ARP, SOCKS

Systemintegration

API Öppen API för integration med programvara

Intelligent video Rörelsedetektor för video, aktiv manipulation av larm, ljuddetektering

Larmtrigge Intelligent video, externa ingångar, videoförlust, fullt lagringsutrymme

Larmhändelser Filuppladdning via FTP, HTTP och email Notifikation via e-post, HTTP och TCP Aktivering vid extern utgång

Förinställningar av PTZ Lokal lagring

Videobuffert 64 MB före- och efterlarm

Allmänt

Chassi Metalhölje. Fristående eller väggmontering

Processor och minne ARTPEC-3, 128 MB RAM, 128 MB Flash

Effekt 8-20 V DC, max. 7.2 W or

Effekt över Ethernet IEEE 802.3af Class 2/3

Kontakter Analog kompositvideo BNC ingång, automatisk avkänning av NTSC/PAL ,RJ-45

10BaseT/100BaseTX PoE

DC terminal block: effekt in 8-20 V DC, max. 7.2 W eller effekt ut 12 V DC, max. 5 W

I/O terminalblock för fyra konfigurerbara ingångar/utgångar 3.5 mm mic/linjeingång, 3.5 mm linjeutgång, RS-485/ RS-422 Lokalt lagringsutrymme SD/SDHC minneskortsplats Driftförhållanden EN 55022 Class B, EN 61000-3-2, EN 61000-3-3, EN 55024, EN 61000-6-1, EN 61000-6-2, FCC Part 15 Subpart B Class B,

ICES-003 Class B, VCCI Class B, C-tick AS/NZS CISPR 22,

EN 60950-1

Strömförsörjning PS-T: EN 60950-1, CSA, C/US Strömförsörjning PS-K: EN 60950-1, UL, cUL

Vikt 335 g (0.7 lb.)

Dimension

(BreddxHöjdxLängd)

Medföljande accessoarer

Strömförsörjning, monterings- och kontaktkit, Installationshandbok, CD med installation och hanteringsverktyg, programvara och

användarhandbok.

Pris (26-03-2013) 2699 kr

Tabell 1.3: Axis Q7401 SDK [6]

Språk C/C++, C#, .NET Plattform Visual Studio

Fördelar: Nackdelar:

Lätt installation av SDK

Kommer ej med MPEG-2, MPEG-4, H.264 eller AAC dekoder (Måste finnas förinstallerat)

Demoprogram Väldokumenterat API

PTZ support Forum

Tabell 1.4: Teknisk specifikation för VRmDAVC-2-OEM/PRO.[15] Videoenkoder

Videokomprimering H.264, MPEG-4, JPEG (GStreamer plugin)

Upplösning & bildhastighet PAL 720x576 (25 Hz deinterlaced) 360x288 (25 Hz) 720x288 (25 Hz) Upplösning & bildhastighet NTSC 720x480 (30 Hz deinterlaced) 360x240 (30Hz) 720x240 (30 Hz)

Videoströmning Den analoga videokonverteraren kan bearbeta bilder som kommer från analoga kameror helt

självständigt. Den förbehandlade datan kan strömmas över Ethernet. Ytterligare direkta anslutningar av kringutrustning (skärm via HDMI, Wi-Fi, via USB-värd) och kontroll av system är möjligt via RS232 eller GPIOs.

Bildinställningar -

Nätverk

Säkerhet -

Protokoll som stöds

100 Mbit Ethernet på RJ45, stödjer strömning över Ethernet genom TCP/IP

Dimensioner Antal plattor 3 Dimension 42x38x49 mm Storlek på monteringshål 36x32 mm

Avstånd mellan plattor 5 mm

Lagringstemperatur -30-80 C

Allmänt

Videoingång Komposit (med 1 cinch kontakt) Y/C (med 2 cinch kontakt)

S-Video (4-pin mini-DIN kontakt)

Videoutgång S-Video, komposit (MPE-Garry Micro-T kontakt) DVI på externt kort (valbart)

HDMI på externt kort (valbart)

Kontakter 100 Mbit Ethernet på RJ45 USB 2.0 host port

MPE-Garry Micro-T kontakt för RS232/S-Video/Komposit/GPIOs

Hirose DF14-15P för JTAG och serial konsol 5 V strömförsörjning

Pris (26-03-2013) 694.00 Euro (OEM), 724.00 Euro (PRO)

Tabell 1.5: VRmDAVC-2-OEM/PRO SDK [15]

Språk C/C++, COM, .NET,

Plattform Microsoft Visual C++, Basic, C# 2008 eller senare

Fördelar: Nackdelar:

Brett bibliotek: VM_LIB, OpenCV

Val av SDK otydlig

BILAGA 2 UML-Diagram

BILAGA 3 Användarfall

.

Institutionen för teknik

351 95 Växjö

Related documents