2011-04-05 4 views
1

J'ai utilisé directshow.net avec ma webcam et ça a tellement bien fonctionné. Mais quand j'ai fermé le formulaire et l'ai rouvert, il me donne une erreur dans la méthode SetupGraph() parce que la valeur qui vient de la prochaine ligne de code est négative.Comment se déconnecter de la webcam en utilisant DirectShow?

hr = capGraph.RenderStream(ref cat, ref med, capFilter, null, null);

mais quand je débranché mon appareil photo, il fonctionne bien la deuxième fois.

J'espère que ce n'est pas une grosse affaire.

+0

Vous ne connaissez pas le SDK, mais existe-t-il une méthode pour fermer le Stream? – jp2code

Répondre

1

Vous pouvez essayer d'appeler yourMediaControl.StopWhenReady() méthode et après que la libération de toutes les instances de l'objet com comme , source, grabber, capture graph avec Marshal.ReleaseComObject.

La méthode IMediaControl.StopWhenReady arrête le graphique de filtre, ce qui permet à la file d'attente des filtres données, puis arrête le graphique de filtre.

La chose principale est que chaque fois que vous démarrez la vidéo de webcam que vous devez faire tout cela:

  1. créer constructeur graphique, graphique de filtre, objet dispositif, grabber ...
  2. render flux
  3. run contrôle des médias
  4. attente jusqu'à ce que les signaux d'utilisateur pour arrêter la vidéo
  5. arrêt de contrôle de média (StopWhenReady)
  6. libérer/détruire des objets créés
Questions connexes