DirectShow . net摄像机捕获编码输出

本文关键字:编码 输出 net 摄像机 DirectShow | 更新日期: 2023-09-27 18:06:55

最近我已经开始在我自己的项目上工作,这是使用DirectShow . net捕获相机输出。有几个问题我不知道如何解决1)如何将捕获的流编码为H.264格式。我知道我应该如何在过滤器图中添加过滤器。但我不知道在哪里,怎么去的。此外,我无法找到是否有标准的H.264过滤器,或者我应该从某个地方下载它?如果我需要下载它,它可以只是一个dll,我添加参考或它应该是安装程序?2)是否有一种方法可以将捕获的输出保存到内存对象中,某种流或只能写入文件?最好的问候,Iordan

DirectShow . net摄像机捕获编码输出

您可以使用VisioForge或Viscomsoft的商业软件。

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

  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)是的,你应该下载编码器过滤器库。大多数解码器是免费提供的。但编码器不是。如果你不想付钱,你必须找到开源编码器。为了在图形化程序中使用,你应该对dll文件进行dll寄存器。或者安装程序会这样做。你还需要检查容器类型,如mp4, mkv…换句话说,您需要mux过滤器将其保存在文件中。我想有人会链接可用的网址。对不起,我现在没有网址。

2)捕获的手段是什么?那是电影吗?或者图片?

  • 对于图像,有许多示例项目和SampleGrabbers。

  • 在电影的情况下,我敢肯定你的电脑内存是不够的,他们没有编码。创建内存流并传递给捕获管理器

您还可以创建一个过滤器,以便根据您的需要定制过滤器。所有信息都包含在Windows SDK示例中。