我想构建需要能够使用C#从网络摄像头捕获视频的应用程序。 捕获的视频应该使用一些编解码器进行压缩(没有什么特别的,可以节省空间的任何东西)并在捕获时写入文件。不需要实时预览捕获。
第一个问题是哪个API适合这个,你会推荐(我已经看过DirectShow,Windows Media Foundation包装等等......不确定哪个最适合托管环境和C#)?
我还需要WPF中的视频播放器,它将播放捕获的视频。此播放器必须能够从任意位置播放捕获的视频,暂停和开始/停止视频。 将所有内容放在一起 - 视频从背景中的网络摄像头捕获,同时播放器播放该视频,但它可以暂停,重新融合,停止 - 就像现代DVR一样。
第二个问题 - 是否可以使用WPF MediaElement创建此类播放器? (混乱是关于同时从捕获填充并在玩家中玩的文件)
答案 0 :(得分:2)
如何制作所有你想要的WebCam
的好例子答案 1 :(得分:0)
您可以尝试使用DirectShow.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";
};