DirectShow .Net摄像头捕获编码输出?

时间:2013-03-31 08:09:08

标签: c# directshow directshow.net

最近我开始研究自己的项目,即使用DirectShow .Net捕获摄像头输出。我不知道怎么解决的问题很少 1)如何将捕获的流编码为H.264格式。我理解我应该如何在滤波器图中添加滤波器。但我无法找到地点和方式。此外,我无法找到是否有标准的H.264过滤器或我应该从哪里下载?如果我需要下载它可以只是一个dll我添加引用或应该是安装程序? 2)有没有办法将捕获的输出保存到内存对象,某种流或它只能写入文件? 最好的祝福, 约尔丹

3 个答案:

答案 0 :(得分:1)

  1. 您需要使用FFMpeg或Handbrake之类的东西。查看http://vidcoder.codeplex.com/。 AForge还具有一些视频编辑功能,您也可以将过滤器传递给它。您还可以使用几个FFMpeg C#包装器,例如https://github.com/crazyender/FFMPEG.net

  2. 您应该使用AForge.net。所有的努力都已经为你完成了。使用VideoFileWriter http://www.aforgenet.com/framework/docs/html/4ee1742c-44d3-b250-d6aa-90cd2d606611.htm。我看来AForge框架也使用了FFMpeg(参见AForge.Video.FFMPEG命名空间)。您只需创建一个编写器并将其传递给位图/帧writer.WriteVideoFrame(bitmap);

  3. 您应该全面调查AForge中的视频抽象。你可以节省大量的时间。

    示例:http://www.aforgenet.com/framework/samples/video.html

答案 1 :(得分:1)

1)是的,您应该下载编码器过滤器库。大多数解码器都是免费提供的。但编码器不是。如果您不想付费,则必须找到开源编码器。 要在graphedit程序中使用,您应该使用该dll文件进行dll注册。或者安装程序执行此操作。而且你还需要检查容器类型,如mp4,mkv ...换句话说,你需要mux过滤器将其保存在文件中。我想有人会链接可用的网址。对不起,我现在没有网址。

2)捕获手段是什么?那是电影吗?还是形象?

  • 对于Image,有许多示例项目和SampleGrabbers。您可以将其保存到文件和内存中。

  • 在电影的情况下,我确定你的电脑内存不会出现在他们的编码上。制作内存流并将其传递给捕获管理器。

您还可以制作过滤器,以根据您的需要自定义过滤器。所有信息都包含在Windows SDK示例中。

答案 2 :(得分:1)

您可以使用VisioForgeViscomsoft中的商业软件。

AForge潜在问题 - 捕获期间没有音频,只有视频。输出格式也非常有限。但是 - 它是免费和开源的,如果您有任何DirectShow体验,您可以添加音频支持。