[C++ ?] video bewerking (en meer)

Pagina: 1
Acties:

  • SJR
  • Registratie: Januari 2000
  • Laatst online: 15-02 13:58
Een vriend van me belt me net op met een interessant project.
Hij hockeyed bij een elftal (DSHC), en ze willen graag digitale video gebruiken voor spel analyse. Ik zal zijn voorstel hier uiteen zetten:
Het idee is dat een wedstrijd wordt gefilmt met 1 digitale videocamera die direct op een laptop zit aangesloten, zodat de video stream realtime op de laptop zichtbaar is. Deze video stream moet dan op een bepaald moment kunnen worden gecaptured en opgeslagen in een database. Als Janssen bijvoorbeeld een foute loopactie maakt, dan moet in een programma de naam Janssen en loopactie worden selecteerd, en moet de stream worden gecaptured en opgeslagen in een database systeem totdat de loopactie stopt, en de capture dus ook (handmatig) wordt gestopt.
Ik kan me de inplementatie van het database systeem nog wel voorstellen. Je drukt op 'Start capture'; het capturen start en er wordt een ID toegekent aan het fragment;
tijdens het capturen selecteer je (eventueel, als er tijd voor is) de naam en de actie; je drukt op 'Stop capture'; als er geen naam en actie is geselecteerd komt het ID in een lijst van niet gearchieveerde actie's, om later (tijdens de wedstrijd) te archieveren. Is er wel een naam en actie geselecteerd, dan word het ID gelijk in de database gegooid (ik denk dat het niet handig is om het fragment zelf in de database te zetten, de database zou dan onhandig groot worden); hierna is het systeem klaar om het volgende fragment te capturen.
Later kunnen dan bijvoorbeeld uit de database alle foute loopacties van Janssen uit een aantal wedstrijden worden geselecteerd.
Ik heb echter geen idee hoe de implementatie van het caputeren zelf moet gebeuren.

Een vergelijkbaar systeem wordt al ontwikkeld door het nationale team van Australie en Duitsland. Ook Nederland heeft er plannen voor.

Nu heb ik zelf nog weinig ervaring met C++, ik ben er pas net een beetje in begonnen. Wel heb ik ruime ervaring met php, sql en (iets minder met) java. Het is mij ook niet gevraagd of ik dit programma kan ontwikkelen (want dat kan ik (nog) niet), maar wat mijn ideeen erover zijn.

Mijn vraag is nu in hoeverre dit systeem in welke taal uitvoerbaar is. Ik denk dat elke digitale videocamere wel een programma heeft om fragmenten te capturen, maar niet met de optie's zoals hierboven beschreven. Mij lijkt het dus noodzakelijk om zelf een programma te ontwikkelen die het capturen aanstuurt. Bestaan hiervoor (windows) API's, in bijvoorbeeld C++, of zou je die ook nog zelf moeten schrijven?
Heeft iemand ervaring met een vergelijkbaar programma, of is er misschien al een commercieele applicatie die is soortgelijks doet.

Kortom, alle ervaring, advies, etc is welkom.

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 17:11
API's zijn er zeker wel, neem bijv VirtualDub ed, die werken allemaal via dezelfde interface als ik het goed heb.

Ik denk dat je in de MSDN erg veel kan terug vinden hierover


En google weet ook erg veel:

http://www.codeguru.com/misc/VFW.html

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Ik geloof dat er bij Visual Basic (proffesional) zelfs standaard ActiveX controls en samples worden meegeleverd voor Video Capturing.

Bovendien is VirtualDub inderdaad Open-source, dus een bron van praktijk-informatie lijkt me.

Of kijk eens naar DirectShow van Micorsoft DirectX.

|_____vakje______|


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Als ik dit zo lees, dan lijkt het me beter om de hele film in 1 bestand op te slaan en vervolgens in de database alleen start en eind tijden van de actie (+ andere benodigde gegevens) op te slaan. Je hebt dan alleen aan het begin een bepaald synchronisatie moment nodig, en dan hoef je in eerste instantie niet eens de film gelijk al op je hardeschijf te zetten. Daarnaast is dit systeem makkelijker uitbreidbaar naar meerdere camera's. Eventueel kun je naderhand De films op schijf zetten, en dan ook goed comprimeren (divx oid) zodat ze niet teveel ruimte innemen. Het realtime comprimeren is wat lastig omdat een seconde film comprimeren langer duurt dan een seconde. Zeker waneer de computer ondertussen ook nog wordt gebruikt om actie punten op te slaan.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • KnoppenSpook
  • Registratie: Augustus 2000
  • Laatst online: 04-09-2023
je zou een buffer van een minuut of 5 kunnen maken. en als er een actie is de stream gaan opslaan (vanaf bv 2 minuten daarvoor) en anders laat je de stream gewoon lopen. Misschien een id-tje

/me weet geen leuke quote voor in zijn signature