【问题标题】:Is it possible to write DirectShow filters in C# (not in c\c++)?是否可以用 C#(而不是 c\c++)编写 DirectShow 过滤器?
【发布时间】:2010-02-13 19:53:03
【问题描述】:

是否可以用 C#(而不是 c\c++)编写 DirectShow 过滤器?

我的意思是不仅要创建源过滤器,还要创建渲染器或压缩器等?

【问题讨论】:

    标签: c# filter directshow


    【解决方案1】:

    Maxim Kartavenkovcodeproject.com上写了很多有用的DirectShow文章。看看这篇文章:Pure .NET DirectShow Filters in C#。它不仅包含源过滤器,还包含变换过滤器、渲染器、编码器等。

    他文章中的代码不是基于directshow.net库的,这是好事。

    【讨论】:

      【解决方案2】:

      是的。您可以使用DirectShow.net Lib 来帮助缩小差距。

      他们甚至有一个示例,如果您向下看页面,您会看到 GSSF 示例说明:

      GSSF – 通用样本源 过滤器——一种实现源的方法 在 C# 中过滤。如果您有样品(对于 来自位图的示例视频帧 文件),您想用作 图表中的源,此过滤器将 告诉你怎么做。

      【讨论】:

      • 有什么方法可以创建源过滤器,例如渲染器或压缩器等?
      【解决方案3】:

      您可以,但除非您非常了解 DirectShow 和 .NET 本机互操作,否则这可能会很困难。即便如此,它也可能有点上坡。

      这里是一个例子:http://www.sichbo.ca/Free_Code/100_C_Sharp_directshow_filters

      【讨论】:

        【解决方案4】:

        我认为在 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) 并修改一个.

        【讨论】:

          【解决方案5】:

          基本上,您可以将 .NET 类导出为 COM。要使用 DShow 接口,只需从您的 .NET 项目链接到 CM 对象。无论如何,在 .NET 中编写 DShow 过滤器而不支持诸如 BaseClasses for C++ 之类的库可能具有挑战性。

          【讨论】:

            猜你喜欢
            • 2016-11-10
            • 2012-05-15
            • 2019-10-23
            • 2022-01-05
            • 1970-01-01
            • 2020-06-20
            • 2023-04-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多