如何捕获视频并使用C#播放?

时间:2012-04-17 14:14:56

标签: c# wpf video-capture

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

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

我还需要WPF中的视频播放器,它将播放捕获的视频。此播放器必须能够从任意位置播放捕获的视频,暂停和开始/停止视频。 将所有内容放在一起 - 视频从背景中的网络摄像头捕获,同时播放器播放该视频,但它可以暂停,重新融合,停止 - 就像现代DVR一样。

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

5 个答案:

答案 0 :(得分:2)

如何制作所有你想要的WebCam

的好例子

答案 1 :(得分:0)

您可以尝试使用DirectShow.net库。

http://directshownet.sourceforge.net/

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

答案 4 :(得分: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";
};