【发布时间】: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