1

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

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

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

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

4

5 回答 5

2

很好的例子如何制作你想要的网络摄像头

于 2012-04-17T14:19:39.117 回答
1

我已经使用 AForge( http://www.aforgenet.com/ ) 库集来逐帧接受视频。我使用 (private void videoSourcePlayer1_NewFrame(object sender, ref Bitmap image)) 函数来执行此操作。

于 2013-06-19T10:17:16.430 回答
0

你可以试试 DirectShow.net 库。

http://directshownet.sourceforge.net/

于 2012-04-17T14:19:41.427 回答
0

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

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

于 2012-04-17T14:57:04.617 回答
0

我可以推荐 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";
};
于 2018-02-20T07:57:39.883 回答