Seite 2 von 2

Re: Ip Cam/USB Cam anzeigen und auf Festplatte speichern

Verfasst: 27.11.2010 20:58
von torstenh
Hallo zusammen,

die Ansteuerung des AVR NET IO ist so weit erledigt, nur noch einige Kleinigkeiten. Bin im Moment an einer USB Cam dran und spreche diese mit der avicap32.dll an. Das Bild ist da! ich habe nun das Problem das ich keine Beschreibung zu dieser dll finde. Das heißt, was bedeuten die vielen Konstanten? oder wo bekommt man eine Beschreibung her? Hintergrund meiner Frage ist, ob man auch die Belichtungszeit einer Webcam über diese DLL verlängern kann?
Ich möchte gern noch ein wenig mit der dll "spielen" um zu sehen was so alles geht.

Kann mir jemand helfen?

Viele Grüße,
Torsten

Re: Ip Cam/USB Cam anzeigen und auf Festplatte speichern

Verfasst: 05.12.2010 15:29
von Dark
Hi,

deine verwendete Methode, Video For Windows (VFW), ist eigentlich schon veraltet und bietet solche Möglichkeiten nicht direkt durch Befehle an. Es gibt Möglichkeiten durch anzeigen bestimmter Dialoge solche Einstellungen per Hand vor zu nehmen, jedoch gibt es leider nicht die Möglichkeit per Code Einstellungen automatisch zu ändern.

Die alternative hierbei wäre DirectShow, welches einem wesentlich mehr Einfluss gibt, jedoch auch sehr viel schwieriger zu implementieren ist, da man diese Art von OOP nicht aus PureBasic gewöhnt ist. Es gibt ein Interface ICameraControl in DirectShow, welches dir alle benötigten Einstellungen zur Verfügung stellt.

mfg,
DarkPlayer

Re: Ip Cam/USB Cam anzeigen und auf Festplatte speichern

Verfasst: 05.12.2010 20:44
von D.J.Peters
Hallo Torsten,
wenn Du vermutest Das Du Teile des Code's für USB Cam's später für Dein IP Cam Projekt weiter verwenden kannst
dann muß ich Dich leider entäuschen.

USB Cam's (und USB Sticks mit Videio Eingang und TV Karten) welche über einen WDM Treiber verfügen können alle über VFW (Video For Windows) angesprochen werden.
Der Rest (ohne WDM Treiber) wird über Filter Pins des DirectShow COM Interfaces programmiert.

IP Cam's könnten im Prinzip über ein einheitliches Protkoll angesprochen werden aber in der Praxis gibt es viele Firmeneigene Standards
so das Du wie hier schon geschrieben auf eine API (meist in einer DLL) des Herstellers angewiesen bist.

Mit der älteren VFW Programmierung bin ich vertraut und habe auch schon einige Decoder's veröffentlicht.
Die Decoder kommen immer dann zum Zuge wenn die Cam bzw. dessen optischer Halbleiterchip die Videosequenzen nicht im RGB Farbraum liefern bzw. transportieren.

Tests hatten gezeigt das einfache selbstgeschriebene Decoder bis zu 250% schneller sind als die instalierten Windows Codec's.
(Das Ergebnis ist eine viel geringere CPU Auslastung interresant für Applikationen mit mehreren Streams zur gleichen Zeit)

Solltest Du mal einen Decoder für Deine angepeilte USB oder IP Cam brauchen
hier die Liste welche ich implementiert habe und ggf. mit aushelfen könnte.
YV12, I420, IYUV, YUV2, YUV, UYVY

Wenn Du dich in die Thematik eingearbeit haben solltest
hier mal eine Seite wo fast alle (oder mittlerweile alle) gebräuchlichten Codecs Formate gelistet werden.
http://www.fourcc.org/

Grüsse Joshy

edit:
Zum Thema veraltet.
Ich habe 6 USB Cams von vier verschiedenen Herstellern
und einen USB Stick und eine HDTV PCI Sat-Karte beide mit Video Eingang.
Alle Geräte kann ich über VFW programmieren
aber nur die häfte der Geräte haben einen Treiber für DirectShow.
Die Vergangenheit hat auch gezeigt Das Cam's mit WDM Treiber immer viel
schneller auch unter Linux zum laufen gebracht werden konnten als die die
"nur" mit DirectShow Treiben daher kommen.

Re: Ip Cam/USB Cam anzeigen und auf Festplatte speichern

Verfasst: 05.12.2010 21:02
von D.J.Peters
Einen heißen Tip für Dich habe ich noch.

Wenn Du keine Lust hast Dich in die DirectShow COM Programierung mit PB einzuarbeiten
es gibt ein echt genial einfaches DLL Interface welches Du mit jeder Programmiersprache nutzen kannst.

http://sol.gfxile.net/escapi/index.html

Grüsse Joshy

Re: Ip Cam/USB Cam anzeigen und auf Festplatte speichern

Verfasst: 05.12.2010 21:16
von Dark
Das VFW veraltet ist steht ja indirekt schon in der MSDN:
http://msdn.microsoft.com/en-us/library/dd757708%28VS.85%29.aspx hat geschrieben: Video for Windows

Microsoft® Video for Windows® (VFW) provides functions that enable an application to process video data. VFW was introduced in 16-bit Windows. Many of its features have been superseded by features in DirectX. For more information, see the DirectX documentation.
Desweiteren wird bei DirectShow (im gegensatz zu VFW) das WDM Driver model genutzt, siehe hierzu (WDM Video Capture Filter): http://msdn.microsoft.com/en-us/library ... 85%29.aspx

Ich konnte bis jetzt hin auch jedes Gerät per DirectShow ansprechen, wobei jedoch erwähnt werden muss, das die Programmierung bei TV Karten sich stark unterscheidet, da hier wesentlich mehr Filter benötigt werden.
http://www.microsoft.com/whdc/archive/wdmvid.mspx hat geschrieben: Analog Peripherals and Video Capture

Analog video peripherals such as PCI video capture and TV/FM tuners are supported through WDM. Previously, developers were required to write proprietary software to control video peripherals. With WDM, Microsoft defined generic interfaces through DirectShow for analog TV/FM tuners and A/V multiplexers. Analog video peripheral support is fully documented in the DirectShow SDK.
mfg,
Dark

Re: Ip Cam/USB Cam anzeigen und auf Festplatte speichern

Verfasst: 05.12.2010 23:04
von torstenh
Hallo zusammen,


Danke euch für eure antworten. Da habe ich noch ein wenig zu tun um micht dort einzuarbeiten. Aber es hilft mir ein wenig weiter.



bis dann,
Torsten

PS.: mit IP Cam wird es glaube ich einfacher!