首页 文章

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

提问于
浏览
0

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

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

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

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

5 回答

  • 0

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

  • 0

    您可以尝试DirectShow.net库 .

    http://directshownet.sourceforge.net/

  • 2

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

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

  • 0

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

  • 0

    我可以推荐WPF ffmediaelement . 它 Build 在ffmpeg上 . 那么什么可以ffmpeg,也可以ffmediaelement . 可以从网络摄像头和捕获卡中捕获视频 . 与DirectShow不同,'s very simple. Here'是如何设置视频源的:

    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";
    };
    

相关问题