' schrieb:Guten Morgen miteinander,
mal wieder ein Newbie, der sich seit Wochen verzweifelt am Import eines Videosignals versucht und hier auf Hilfe hofft...
Kurze Problemdarstellung:
Ich will mit Hilfe eines USB-Videograbbers (Pinnacle Studio Movie-Box) und einer separaten Kamera ein Livestream-Bildsignal in LabVIEW einfügen. (Eine normale Webcam ist leider nicht möglich gewesen, da die Anwendung eine größere Brennweite als die der normalen Cams erforderte.) Das ganze soll möglichst ohne das Zusatzpaket Vision funktionieren, da ich das Projekt bei einer Firma entwickle und die nicht die Zusatzkosten für das komplette Paket bezahlen.
Hab hier im Forum schon diverse Ansätze gefunden, die aber leider nur teilweise funktionieren.
Ein funktionierender Ansatz ist das IVision Toolkit von Hytekautomation ( http://www.hytekautomation.com/Products/IVision.html ).
Damit funktioniert das ganze problemlos. Aus rechtlichen Gründen ist aber ein Einsatz der Demoversion hier nicht möglich und die Unter-VIs sind leider alle Passwortgeschützt - eine Inspirationshilfe ist also nicht möglich...
Selbst ohne Passwort hast Du da gar nichts dran. Die wirkliche Arbeit von IVision wird in DLLs gemacht die von den IVision VIs aufgerufen werden. Das ganze Ansprechen von den entsprechenden Windows APIs ist ohne DLL gar nicht zu machen.
Zitat:Zweiter gefundener Ansatz ist das Webcam-Paket von Peter Parent. Hier ist nur das Problem, dass nicht mal die Kamera gefunden wird geschwiege denn irgend ein Bild auf dem Monitor erscheint....
Diese Library verwendet Video for Windows. Ein Uralt-API aus der Zeit von Windows 3.1. Neuere VideoGrabbers unterstützen dieses API schon lange nicht mehr. Zwar gibt/gab es eine DirectX/VfW Bridge von Microsoft in älteren Windows Versionen aber das funktionierte alles andere als perfekt.
Zitat:Das Pinnacle-Teil wurde im MAX nicht automatisch erkannt (obwohl Plug&Play) und somit war eine VISA-Ansprechung ohne Adresse recht schwierig. Hab mir über das USB Instrument Control Tutorial (http://zone.ni.com/devzone/cda/tut/p/id/4478) das Teil zwar einrichten können, aber lustigerweise wird der Grabber nur an einem bestimmten USB-Port im MAX erkannt (dort wo er zum Zeitpunkt des Einrichtens war) und zu guter Letzt funktioniert die Bildübertragung bei IVSION von Hytekautomation nur, wenn der Grabber genau NICHT an diesem Port hängt...
MAX IST für NI Hardware gemacht. Der unterstützt ausser den seriellen und parallelen Ports (und HPIP Karten) grundsätzlich nichts wo nicht irgendwo der NI Adler drauf steht. Ok Du kannst Dir mit den
Instrument Driver Wizard ein INF File für ein beliebiges USB Device erstellen aber das heisst noch nicht das MAX dieses Device wirklich unterstützt. Für MAX ist so ein Device ganz einfach eine Blackbox die beliebige und unbekannte Daten erwartet und auch zurückschickt. Um dieses Gerät anzusprechen musst Du dann in LabVIEW (oder LabWindows/CVI) durch Mittel von VISA auf dem USB Raw Level mit dem Gerät kommunizieren und für digitale Grabber Interfaces ist das das letzte was Du tun willst. USB Raw verlangt von Dir die genaue Kenntnis und Implementation der USB Datenstreams auf den verschiedenen Endpunkten. Alles unbegreifliche Worte für Dich? Macht nichts, denn Du willst das garantiert sowieso nicht wisssen. Zu Deinem Pinnacle ist ganz einfach zu sagen dass die Kommunikation auf unterstem USB Niveau erstens sehr komplex ist da es nicht einfach nur eine einfache Maus ist sondern Videostreams darüber laufen, und ziemlich sicher auch noch proprietär, will sagen Du bekommst von niemandem die Dokumentation über diese Endpunkte und die Datenströme die darüber laufen.
Wenn NI-VISA ein USB Device für sich reserviert ist es nicht mehr zugänglich für andere Software wie den eigentlichen DirectX Treiber. Da der DirectX Treiber das Device nicht mehr ansprechen kann, kann IVision das DirectX verwendet um mit dem Device zu sprechen es auch nicht mehr verwenden.
Zitat:Die Variante von Peter Parent benutzt in allen Unter-VIs die Webcam.dll als externe Bibliothek. Hab schon versucht eine (der unzähligen) Pinnacle-Capture DLLs zu benutzen, hab aber keinen Schimmer, ob es mit denen funktionieren würde bzw. welche davon zu benutzen wäre...
Die Webcam.dll ist eine speziell für diese VIs entwickelte DLL, die das Video für Windows API in ein etwas einfacher mit LabVIEW ansprechbares API umsetzt. Da kannst Du lange versuchen das nach Pinnacle DLLs umzubiegen. Ausser Crashes kann das nie etwas geben.
Wahrscheinlich sind die Pinacle DLL Schnittstellen nicht mal dokumentiert, will sagen für uns Normalsterblichen selbst von C aus unerreichbar, um LabVIEW mal gar nicht zu nennen.
Wenn Du nicht selber mit C Programmierung beginnen willst dann würde ich sagen hast Du grundsätzlich zwei Möglichkeiten.
1) Doch IVision verwenden. Ist garantiert das Einfachste und kostet am Ende einfach am wenigsten da Deine Stunden selbst bei minimalstem Stundenlohn einfach ein Vielfaches kosten.
2) Du versuchst ein ActiveX Control zu finden das ein Video von einem DirectX Grabber in einem Window darstellen kann. Kostet Dich garantiert viel mehr Zeit um das in LabVIEW einzubinden und die meisten davon kosten ebenfalls Lizenzgebühren.
Rolf Kalbermatter