【发布时间】:2010-02-13 19:53:03
【问题描述】:
是否可以用 C#(而不是 c\c++)编写 DirectShow 过滤器?
我的意思是不仅要创建源过滤器,还要创建渲染器或压缩器等?
【问题讨论】:
标签: c# filter directshow
是否可以用 C#(而不是 c\c++)编写 DirectShow 过滤器?
我的意思是不仅要创建源过滤器,还要创建渲染器或压缩器等?
【问题讨论】:
标签: c# filter directshow
Maxim Kartavenkov在codeproject.com上写了很多有用的DirectShow文章。看看这篇文章:Pure .NET DirectShow Filters in C#。它不仅包含源过滤器,还包含变换过滤器、渲染器、编码器等。
他文章中的代码不是基于directshow.net库的,这是好事。
【讨论】:
是的。您可以使用DirectShow.net Lib 来帮助缩小差距。
他们甚至有一个示例,如果您向下看页面,您会看到 GSSF 示例说明:
GSSF – 通用样本源 过滤器——一种实现源的方法 在 C# 中过滤。如果您有样品(对于 来自位图的示例视频帧 文件),您想用作 图表中的源,此过滤器将 告诉你怎么做。
【讨论】:
您可以,但除非您非常了解 DirectShow 和 .NET 本机互操作,否则这可能会很困难。即便如此,它也可能有点上坡。
这里是一个例子:http://www.sichbo.ca/Free_Code/100_C_Sharp_directshow_filters
【讨论】:
我认为在 C# 中实现一个完整的 DirectShow-Filter 是一个坏主意。 C++ DirectShowBaseClasses 非常有用。重新实现这些将导致一团糟。
如果您想实现解码器/编码器或一些音频/视频效果,那么您可以创建一个 DMO(可能在 C# 中,但 C++ 会更好)。如果您需要 Source-Filter,请获取 Ball-Sample 并对其进行修改。如果您需要其他类型的过滤器,请查看示例 (http://msdn.microsoft.com/en-us/library/windows/desktop/dd375468(v=vs.85).aspx) 并修改一个.
【讨论】:
基本上,您可以将 .NET 类导出为 COM。要使用 DShow 接口,只需从您的 .NET 项目链接到 CM 对象。无论如何,在 .NET 中编写 DShow 过滤器而不支持诸如 BaseClasses for C++ 之类的库可能具有挑战性。
【讨论】: