【问题标题】:DirectShow (C#): Weird black screen issueDirectShow (C#):奇怪的黑屏问题
【发布时间】:2019-09-06 05:03:58
【问题描述】:

我是 COM 和 C# 的新手。

我有一个非常基本的过滤器图,它被修改为在 winforms 应用程序的图片框上显示图像。

一切正常在普通 PC 中正常运行。 但是我在目标 PC 上的图片框上得到了黑色图像(好像图像出现之前的相同黑暗状态从未继续显示流数据),这非常弱。

如果我完好无损地使用原始视频渲染器过滤器,则该图可以在同一台 PC 上正常渲染。 问题出现在我用图片框替换最后一个渲染器时

由于没有错误,而且似乎与平台规范有关,我需要有经验的 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);

`

没有收到错误信息

【问题讨论】:

    标签: c# winforms picturebox directshow comobject


    【解决方案1】:

    我发现了问题。 顺便说一句,它在 GrapheditPlus 的自动生成代码中。

    奇怪的问题是由于在每个AddFilter 之后调用RenderStream。在最后一个“过滤器”(在我的情况下为picturebox)之后的一次调用就足够了。 很可能,PC 的低规格特性使整个事情半途而废。系统假设之前的调用很好,但显然不是。

    我正在注释掉问题中的多余行。其余代码不需要修改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 2011-05-16
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多