1

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

4

1 回答 1

2

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

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

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

关于使用样本采集器(来自 DirectShow.net 站点 -常见问题部分):

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

基类尚未转换为可从 .NET 使用。在两次尝试这样做之后,好吧,让我们说它们在设计时没有考虑到托管代码。

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

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

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

于 2010-11-27T08:36:16.030 回答