【问题标题】:How to capture video from WDM to MPEG format using DirectShow?如何使用 DirectShow 将视频从 WDM 捕获为 MPEG 格式?
【发布时间】:2011-05-16 11:48:34
【问题描述】:

我想从视频源捕获视频并使用 DirectShow 将其编码为 MPEG 格式。如何设计 Capture Graph 以及如何设置 MPEG 格式的视频属性(例如比特率、帧率、分辨率等)

【问题讨论】:

    标签: c++ directshow video-capture directshow.net


    【解决方案1】:

    我的方法(我在 VideoPhill recorder 的制作中使用)是使用 DirectShow.net 仅用于捕获帧,然后使用 SampleGrabber 过滤器创建帧队列,然后将其馈入编码器 - 我使用 @987654323 @为此。

    我的愿望是大部分时间都保持管理状态 - 并且使用这种方法我能够做到。

    稍后 - 这似乎是正确的方法,因为现在我可以将各种编码器直接连接到一个捕获设备。以前只有使用SimulStream (tm) 才有可能。不仅如此,您还可以使用不能用作 DS 过滤器的编码器。

    关于使用样本采集器(来自 DirectShow.net 站点 - faq section):

    Q9:我在哪里可以找到 BaseClass?如何在 C# 中编写过滤器?

    基类尚未转换为可从 .NET 使用。经过两次尝试后,好吧,让我们说它们在设计时并未考虑托管代码。

    不过,您仍然有选择。首先,您可以使用样本采集器来捕获视频帧。在让它们继续到图表中的下一个过滤器之前,可以随意编辑这些帧。请参阅 DxLogo 示例(以及其他示例)了解这是如何完成的。

    其次,您可以编写 DirectX 媒体对象 (DMO)。库中包含两个示例,显示了这是如何完成的。虽然 DMO 存在常规过滤器没有的限制,但您可能会发现这些限制对您来说不是问题。有大量文档(包括 CHM 文件)讨论了如何执行此操作。

    第三,有一个名为 GSSF 的样本。如果要创建源过滤器(即图中生成流的过滤器),可以使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      相关资源
      最近更新 更多