【问题标题】:How to capture video and play it with C#?如何捕获视频并使用 C# 播放?
【发布时间】:2012-04-17 14:14:55
【问题描述】:

我想构建需要能够使用 C# 从网络摄像头捕获视频的应用程序。 捕获的视频应该使用一些编解码器(没有什么特别的,任何可以节省空间的可用的东西)进行压缩,并在捕获时写入文件。不需要实时预览捕获。

第一个问题是哪种 API 适合于此,您会推荐(我见过 DirectShow、Windows Media Foundation 包装器等...不确定哪个最适合托管环境和 C#)?

我还需要 WPF 中的视频播放器来播放捕获的视频。此播放器必须能够从任意位置播放捕获的视频、暂停和开始/停止视频。 总而言之 - 视频是从后台的网络摄像头捕获的,同时播放器播放正在捕获的视频,但它可以暂停、倒带、停止 - 类似于现代 DVR。

第二个问题 - 是否可以使用 WPF MediaElement 创建这样的播放器? (混淆是关于同时从捕获中填充并在播放器中播放的文件)

【问题讨论】:

  • 您需要使您的问题更加具体 - 将其分解为处理您在尝试某事后遇到的特定问题的块。
  • 我需要关于使用哪种 API(技术)进行捕获的建议,这不是关于问题的问题,而是关于建议的问题!
  • 那样的话,恐怕不适合StackOverflow。

标签: c# wpf video-capture


【解决方案1】:

如何制作你想要的所有东西的好例子WebCam

【讨论】:

    【解决方案2】:

    我使用 AForge(http://www.aforgenet.com/) 库集来逐帧接受视频。我使用 (private void videoSourcePlayer1_NewFrame(object sender, ref Bitmap image)) 函数来做到这一点。

    【讨论】:

    • 当他们标记 WPF 时,我假设他们想在 WPF 中使用它,而 aforge 似乎只与 winforms 兼容
    【解决方案3】:

    你可以试试 DirectShow.net 库。

    http://directshownet.sourceforge.net/

    【讨论】:

      【解决方案4】:

      我用过VlcDotNet。它非常灵活且易于使用。它也有一个非常活跃的用户群。

      我用它来显示实时视频流以及录制到文件。

      【讨论】:

        【解决方案5】:

        我可以推荐 WPF ffmediaelement。它建立在ffmpeg 之上。那么什么都可以ffmpeg,也可以ffmediaelement。可以从网络摄像头和采集卡采集视频。与 DirectShow 不同,它非常简单。 以下是设置视频源的方法:

        Media.Source = new Uri("device://dshow/?video=Osprey-460e Video Device 1C");
        

        ...及其在 MediaOpening 事件中的参数:

        Media.OnMediaOpening(s, e) =>
        {
            e.Options.Input["framerate"] = "25";
            e.Options.Input["video_size"] = "768x576";
            e.Options.Input["pixel_format"] = "yuyv422";
        };
        

        【讨论】:

          猜你喜欢
          • 2012-12-16
          • 1970-01-01
          • 1970-01-01
          • 2020-12-08
          • 1970-01-01
          • 2013-01-18
          • 1970-01-01
          • 2018-04-02
          • 1970-01-01
          相关资源
          最近更新 更多