【问题标题】:DirectShow .Net camera capture encode output?DirectShow .Net 摄像头捕获编码输出?
【发布时间】:2013-03-31 08:09:08
【问题描述】:

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

【问题讨论】:

    标签: c# directshow directshow.net


    【解决方案1】:

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

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

    【讨论】:

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

      2. 您应该使用 AForge.net。所有的辛苦工作都已经为你完成了。使用VideoFileWriterhttp://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

      【讨论】:

        【解决方案3】:

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

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2011-11-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-18
          • 2011-03-24
          • 1970-01-01
          • 2018-02-14
          相关资源
          最近更新 更多