Luigi Di Biasi


XP Programming Style
Home Blogs | Home | Login | Contact | My Profile | RSS | About | Cerca

Enumerare le periferiche video - DirectShow.NET

DirectShow.NET "by SourceForge " L'intendo di questa serie di post è quello di descrivere l'utilizzo della libreria DirectShow.NET in modo da poter accedere alle periferiche video senza dover programmare in C++. Chiaramente, usando DirectShow, ci poniamo come obbiettivo quello di superare le limitazioni della libreria avicap32.dll e quindi, di avere pieno controllo sulle nostre 'care' schede di acquisione. La conoscenza di COM, di alcune strutture e di alcuni oggetti è 
Leggi tutto il post...
giovedì, 11 giu 2009 Ore. 22.37

Scrivi un commento

Nome:
Blog:
E-Mail:
(l'indirizzo e-mail non verrà pubblicato, consente di essere avvertiti quando arrivano nuovi commenti a questo Post)
Codice:
Corpo:
Cookie:

Commenti

Autore: DinoInviato il: 23 giu 2010 - 22.08
Sarebbe stupendo se il codice fosse in c#...
Autore: Luigi Di BiasiInviato il: 24 giu 2010 - 09.49
Ciao Dino,

puoi provare a convertire il codice utilizzando un qualsiasi convertitore on-line (http://www.developerfusion.com/tools/convert/vb-to-csharp/) facendo attenzione ad importare i namespaces con le direttive:

using System.Diagnostics;
using System.Runtime.InteropServices.ComTypes;
using System.Runtime.InteropServices;
using DirectShowLib

dopo la conversione devi mettere a posto 2-3 righe di codice (la bindtostorage) però non essendo esperto di c# non saprei dirti la sintassi corretta =)



Autore: DinoInviato il: 24 giu 2010 - 18.42
Luigi, grazie mille per la pronta risposta... avevo già provato a convertire il codice on-line. Ma qualche funzione non va lo stesso, e non avendo idea di come è strutturato il codice VB... è un vero peccato, il tuo è l'unico codice che son riuscito a far funzionare adeguatamente. E mi servirebbe tanto che funzionasse, sto facendo un progettino di physical computing con il mitico Arduino e mi manca la gestione della webcam. Purtroppo, non voglio usare avicap32.dll perché non riconosce la webcam ed è troppo obsoleto, e prevedendo sviluppi futuri... mannaggia...
Autore: Luigi Di BiasiInviato il: 25 giu 2010 - 11.18
Arduino =)
Ma il progetto è in ambito universitario o lavorativo?

Autore: DinoInviato il: 25 giu 2010 - 12.25
E' il classico weekend project, per pura conoscenza personale. In ambito universitario ho sempre utilizzato Java e framework multiagente tipo Jade, sempre per progetti di physical computing (progetti altamente innovativi in interazione uomo-macchina). A dire la verità, Java è macchinoso sulla realizzazione delle interfacce, ma ti "sbinda" da ogni logica di restrizione, a differenza dei prodotti Microsoft, che comunque ritengo molto validi se utilizzati in ambito, appunto, Microsoft (o comunque web), ma se devo progettare qualche interfaccia da embeddare in qualcosa, scelgo assolutamente Java. Mi sento di friggere perché, in pratica, si tratterebbe soltanto di creare una interfaccia piuttosto "stupida": comandare due servomotori (o passo-passo, è uguale) via arduino via c# (e vabbè, niente di speciale, ho fatto già qualcosa di stupido tipo miscelare i colori di un led multicolor) dove "incastrare" una webcam per farla ruotare (pan&tilt). Ma non voglio due applicazioni separate (potrei comprare una IP-Cam e usarla direttamente dal suo webserver, ma non mi piacciono gli "accrocchi"), ma se non riesco ad accedere a DirectShow, non posso andare avanti... :(
Autore: GianniInviato il: 18 apr 2011 - 23.20
La riga

listaPeriferiche.Items.Add(j.Key & " " & j.Value)

mi genera un errore:

Riferimento a un oggetto non impostato su un'istanza di oggetto.

eppure la lista dei moniker e quella dei friendly name vengono riempite correttamente con l'elenco di tutte le sorgenti video (sono 4) così come elencata anche dal tool GraphEdit. L'errore viene generato sul primo elemento (quello con Key=0)
Autore: GianniInviato il: 18 apr 2011 - 23.53
Aggiungo una nota:
Le listbox funzionano correttamente. Se apro un altro progetto e inserisco elementi a mano non ho errori. Se inserisco elementi a mano nel form in cui sto lavorando, anche qui ottengo lo stesso errore. Quindi deve esserci qualche problema con l'inizializzazione del listbox.
Autore: GianniInviato il: 19 apr 2011 - 00.04
..Scusa... dovrei mettermi in un angolino a meditare... A causa di numerosi rimaneggiamenti nel metodo load non veniva caricato InitializeComponents... tutto risolto.
Spero di riuscire a usare queste informazioni per creare un'interfaccia di controllo per un robot a cui sto lavorando.
Autore: Luigi Di BiasiInviato il: 19 apr 2011 - 12.47
Ciao Gianni,
ho letto solo ora i commenti ma vedo che hai già risolto.

Se trovi problemi con il codice fammi sapere poiché non ricordo se ho aggiornato i post con tutti i problemi che mi avevano segnalato in passato :D


Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003