如何捕获视频并使用 C# 播放?
Posted
技术标签:
【中文标题】如何捕获视频并使用 C# 播放?【英文标题】:How to capture video and play it with C#? 【发布时间】:2012-04-17 14:14:55 【问题描述】:我想构建需要能够使用 C# 从网络摄像头捕获视频的应用程序。 捕获的视频应该使用一些编解码器(没有什么特别的,任何可以节省空间的可用的东西)进行压缩,并在捕获时写入文件。不需要实时预览捕获。
第一个问题是哪种 API 适合于此,您会推荐(我见过 DirectShow、Windows Media Foundation 包装器等...不确定哪个最适合托管环境和 C#)?
我还需要 WPF 中的视频播放器来播放捕获的视频。此播放器必须能够从任意位置播放捕获的视频、暂停和开始/停止视频。 总而言之 - 视频是从后台的网络摄像头捕获的,同时播放器播放正在捕获的视频,但它可以暂停、倒带、停止 - 类似于现代 DVR。
第二个问题 - 是否可以使用 WPF MediaElement 创建这样的播放器? (混淆是关于同时从捕获中填充并在播放器中播放的文件)
【问题讨论】:
您需要使您的问题更加具体 - 将其分解为处理您在尝试某事后遇到的特定问题的块。 我需要关于使用哪种 API(技术)进行捕获的建议,这不是关于问题的问题,而是关于建议的问题! 那样的话,恐怕不适合***。 【参考方案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";
;
【讨论】:
以上是关于如何捕获视频并使用 C# 播放?的主要内容,如果未能解决你的问题,请参考以下文章
使用网络摄像头捕获视频并使用 c# 保存为 avi [重复]