2011-04-05 73 views
1

我使用directshow.net與我的網絡攝像頭,它工作得很好。但是當我關閉窗體並再次打開窗體時,它在方法SetupGraph()中給我一個錯誤,因爲來自下一個代碼行的值是負數。如何使用directshow從網絡攝像頭斷開連接?

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

,但是當我拔掉我的相機,它的工作好了第二次。

我希望這不是什麼大不了的事。

+0

不熟悉SDK,但是有沒有關閉Stream的方法? – jp2code 2011-04-05 18:14:20

回答

1

你可以嘗試調用yourMediaControl.StopWhenReady()方法和發行後像所有COM對象實例,sourcegrabbercapture graphMarshal.ReleaseComObject

IMediaControl.StopWhenReady方法 暫停過濾器圖形,允許 濾波器排隊數據,然後停止 篩選器圖形。

最主要的是,每次啓動網絡攝像頭視頻時,你需要做的這一切:

  1. 創建圖形生成器,過濾器圖表,設備對象,採集...
  2. 渲染流
  3. 運行媒體控制
  4. 等到用戶信號,以停止視頻
  5. 停止媒體控制(StopWhenReady)
  6. 發佈/銷燬創建的對象