当前位置:编程学习 > C#/ASP.NET >>

C# 如何获取USB摄像头的视频

就是普通的USB摄像头,现在要实现一个功能,像QQ一样,插入USB摄像头之后,能通过软件获取摄像头的视频数据。
--------------------编程问答-------------------- 就是一般的usb摄像头,应该跟通信协议无关哦,想先了解一些这方面的知识 --------------------编程问答-------------------- http://directshownet.sourceforge.net/ --------------------编程问答-------------------- --------------------编程问答-------------------- 来学习 --------------------编程问答-------------------- 肿么了,没人搞过吗?应该很好玩才对哦 --------------------编程问答-------------------- 不太容易,好像的会directshow --------------------编程问答--------------------     //
    //视频类
    //
    public class cVideo
    {
        private IntPtr lwndC;//保存无符号句柄
        private IntPtr mControlPtr;//保存管理指示器
        private int mWidth;
        private int mHeight;

        /// <summary>
        /// 初始化视频函数
        /// </summary>
        /// <param name="handle">显示视频控件的句柄</param>
        /// <param name="width">视频宽度</param>
        /// <param name="height">视频高度</param>
        public cVideo(IntPtr handle, int width, int height)
        {
            mControlPtr = handle;//显示视频控件的句柄
            mWidth = width;//视频宽度
            mHeight = height;//视频高
        }
        /// <summary>
        /// 打开视频设备
        /// </summary>
        public void StartWebCam()
        {
            byte[] lpszName = new byte[100];
            byte[] lpszVer =new byte[100];
            VideoAPI.capGetDriverDescriptionA(0,lpszName,100,lpszVer,100);
            this.lwndC=VideoAPI.capCreateCaptureWindowA(lpszName,VideoAPI.WS_CHILD|VideoAPI.WS_VISIBLE,0,0,mWidth,mHeight,mControlPtr,0);
            if(VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_DRIVER_CONNECT,0,0))
            {
                VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_SET_PREVIEWRATE,100,0);
                VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_SET_PREVIEW,true,0);
            }

        }
        /// <summary>
        /// 关闭视频设备
        /// </summary>
        public void CloseWebCam()
        {
            VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_DRIVER_DISCONNECT,0,0);
        }
        /// <summary>
        /// 拍照
        /// </summary>
        /// <param name="hWndC">窗口句柄</param>
        /// <param name="path">要保存bmp文件的路径</param>
        public void GetCamImage(IntPtr hWndC,string path)
        {
            IntPtr hBmp = Marshal.StringToHGlobalAnsi(path);
            VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_SAVEDIB,0,hBmp.ToInt32());
        }
    } --------------------编程问答--------------------
引用 6 楼 am 的回复:
不太容易,好像的会directshow


哎,好像是的,看到很多人都说要用这个,偶下载了,里面好多东西啊。 --------------------编程问答--------------------
引用 7 楼 dycool 的回复:
//
  //视频类
  //
  public class cVideo
  {
  private IntPtr lwndC;//保存无符号句柄
  private IntPtr mControlPtr;//保存管理指示器
  private int mWidth;
  private int mHeight;

  /// <summary>
  /// 初始化视频函数……



您这是用什么方法的 --------------------编程问答-------------------- 应该很好玩啊啊 --------------------编程问答-------------------- 用api吧。 --------------------编程问答-------------------- 可以用API实现!`以前做过一个项目里面有个directshow的方件,可以把视频设备列出来. --------------------编程问答-------------------- 支持用API,以前做过用VB的。就是用API.网上的例子挺多。跟用什么语言关系不大。 --------------------编程问答-------------------- 最近也在找,但不知道为什么捕捉不到。 --------------------编程问答--------------------
引用 7 楼 dycool 的回复:
//
    //视频类
    //
    public class cVideo
    {
        private IntPtr lwndC;//保存无符号句柄
        private IntPtr mControlPtr;//保存管理指示器
        private int mWidth;
        priva……
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,