Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DirectShow.NET中VMR的替代方案_C#_Directshow_Directshow.net - Fatal编程技术网

C# DirectShow.NET中VMR的替代方案

C# DirectShow.NET中VMR的替代方案,c#,directshow,directshow.net,C#,Directshow,Directshow.net,我正在C#windows应用程序中使用DirectShow.NET开发一个视频录制应用程序。到目前为止,我能够构建图形,并使用asfwriter进行记录。录制时,我必须显示带有覆盖文本的预览窗口,对于覆盖文本,我已经实现了SampleGrabber,它工作正常 我面临的问题是,在我的机器上一切正常,但当我将测试应用程序部署到其他机器(操作系统:Windows 7)时,录制未启动,但已找到摄像头 稍后通过异常日志,我在日志中找到以下条目 使用CLSID创建COM组件的实例 来自IClassFact

我正在C#windows应用程序中使用DirectShow.NET开发一个视频录制应用程序。到目前为止,我能够构建图形,并使用
asf
writer进行记录。录制时,我必须显示带有覆盖文本的预览窗口,对于覆盖文本,我已经实现了
SampleGrabber
,它工作正常

我面临的问题是,在我的机器上一切正常,但当我将测试应用程序部署到其他机器(操作系统:Windows 7)时,录制未启动,但已找到摄像头

稍后通过异常日志,我在日志中找到以下条目

使用CLSID创建COM组件的实例 来自IClassFactory的{51B4ABF3-748F-4E3B-A276-C828330E926A}失败 由于以下错误:来自HRESULT的80040273异常: 0x80040273

在谷歌对这个问题进行了一些讨论之后,我发现这个异常是由于系统上没有安装图形驱动程序造成的。安装受人尊敬的图形驱动程序后,一切正常

在安装图形驱动程序之前,我已经检查了摄像头是否在Skype和Google hangout视频聊天应用程序中工作

此异常发生在第行:

IBaseFilter vmr9preview = null;
vmr9preview = (IBaseFilter)new VideoMixingRenderer9(); //THIS LINE CAUSING THE EXCEPTION
hr = Graph.AddFilter(vmr9preview, "VMR9");

大多数操作系统在没有图形驱动程序的情况下工作,因此客户端可能无法安装图形驱动程序。那么,除了
VideoMixingRender9
,还有什么替代方案可以在没有图形驱动程序的情况下工作呢

。此外,早期的SDK有
SampVid
sample视频渲染器,还有开源的渲染器。@romar。在开始之前,我已经浏览了您提供的链接,因为我的应用程序可以在XP或更高版本上运行,所以我选择了
VMR9
。问题是VMR9确实需要安装视频驱动程序吗?我们不能做任何事情来避免这样的问题。VMR-9使用Direct3D,而您没有。您需要这里提到的VMR-7或经典/传统渲染器。@RomanR。Direct3D是指DirectX,对吗?刚才我尝试过安装DirectX,但没有成功。我需要做什么特殊的事情来引用D3D?Direct3D功能不可用,因为通用驱动程序没有所需的功能,而不是因为需要安装DirectX。您需要将应用程序切换到其他渲染器。