簡體   English   中英

DirectShow(C#):奇怪的黑屏問題

[英]DirectShow (C#): Weird black screen issue

我是COM和C#的新手。

我有一個非常基本的過濾器圖,該圖經過了修改,可以在winforms應用程序的圖片框上顯示圖像。

一切都可以在常規PC上正常運行。 但是我在目標PC上的圖片盒上得到了黑色圖像( 好像在圖像出現之前就處於相同的黑暗狀態,從未繼續顯示流數據 ),這是非常薄弱的​​。

如果我完整使用原始的videorenderer過濾器,則該圖在同一台PC上可以正常顯示。 當我用picturebox替換最后一個渲染器時出現問題

由於沒有錯誤,並且似乎與平台規范有關,所以我需要經驗豐富的COM開發人員的幫助。

//pUSB = video capture device
//pMJPEGDecompressor = decompressor
//pColorSpaceConverter = color space
//pNullrenderer2 = null renderer`

//add MJPEG Decompressor
IBaseFilter pMJPEGDecompressor = (IBaseFilter)new MjpegDec();
hr = pGraph.AddFilter(pMJPEGDecompressor, "MJPEG Decompressor");

//connect USB ビデオ デバイス and MJPEG Decompressor 
//hr = pGraph.ConnectDirect(GetPin(pUSB, getCatName(pUSB)), GetPin(pMJPEGDecompressor, "XForm In"), null);
//hr = pGraphBuilder.RenderStream(null, MediaType.Video, pUSB, null, pMJPEGDecompressor);

//add Color Space Converter 
IBaseFilter pColorSpaceConverter = (IBaseFilter)new Colour();
hr = pGraph.AddFilter(pColorSpaceConverter, "Color Space Converter");

//connect MJPEG Decompressor and Color Space Converter
//hr = pGraph.ConnectDirect(GetPin(pMJPEGDecompressor, "XForm Out"), GetPin(pColorSpaceConverter, "Input"), null);
//hr = pGraphBuilder.RenderStream(null, MediaType.Video, pMJPEGDecompressor, null, pColorSpaceConverter);

//Add the NULL Renderer
IBaseFilter pNullrenderer2 = (IBaseFilter)new NullRenderer();
hr = pGraph.AddFilter(pNullrenderer2, "Null Renderer");
//hr = pGraphBuilder.RenderStream(null, MediaType.Video, pColorSpaceConverter, null, pNullrenderer2);

hr = pGraphBuilder.RenderStream(null, MediaType.Video, pUSB, null, null); 

Marshal.ReleaseComObject(pUSB);

`

沒有收到錯誤消息

我發現了問題。 順便說一下,它在GrapheditPlus自動生成的代碼中。

奇怪的問題是由於在每個AddFilter之后調用RenderStream 在最后一個“過濾器”(在我的情況下為圖片picturebox )之后的一個調用就足夠了。 可能是PC的低規格特性使整個事情失敗了一半。 系統認為先前的調用是好的,但是顯然不是。

我正在注釋問題中的多余行。 其余代碼不需要修改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM