0

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

4

3 回答 3

1

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

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

于 2013-04-01T04:23:30.497 回答
0
  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);

您应该充分研究 AForge 中的视频抽象。您可以为自己节省大量时间。

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

于 2013-03-31T08:24:20.413 回答
0

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

2)那是什么捕获手段?是那部电影吗?或图像?

  • 在 Image 的情况下,有许多示例项目和 SampleGrabbers。您可以将其保存到文件和内存中。

  • 如果是电影,我敢肯定你的电脑内存在没有编码的情况下对他们来说是不够的。制作内存流并将其传递给捕获管理器。

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

于 2013-03-31T08:29:28.300 回答