如何将IP摄像机流转换为C#?

我已经使用AForge库来制作这个小程序,它显示从网络摄像头到PictureBox的实时馈送。

private FilterInfoCollection VideoCaptureDevices; private VideoCaptureDevice FinalVideoDevice; private void Form1_Load(object sender, EventArgs e) { VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); try { foreach (FilterInfo VidCapDev in VideoCaptureDevices) { comboBox1.Items.Add(VidCapDev.Name); comboBox1.SelectedIndex = 0; } FinalVideoDevice = new VideoCaptureDevice(VideoCaptureDevices[comboBox1.SelectedIndex].MonikerString); FinalVideoDevice.NewFrame += new NewFrameEventHandler(FinalVideoDevice_NewFrame); FinalVideoDevice.Start(); } catch { MessageBox.Show("No camera found. Please connect your camera and click RESET."); } } ////////////////////////////////////////////////////////////////////////////////////////// void FinalVideoDevice_NewFrame(object sender, NewFrameEventArgs e) { try { pictureBox1.Image = (Bitmap)e.Frame.Clone(); } catch { } } 

但我还需要从IP摄像头获取流。 任何想法最好的方法是什么?

用来自同一个AForge.net的MJPEGStream解决了它:)

 MJPEGStream stream = new MJPEGStream("http://192.168.2.5:8080/videofeed"); stream.NewFrame += new NewFrameEventHandler(video_NewFrame); stream.Start(); 

IP摄像机在Windows中没有特定的媒体接口/ API,它们只是LAN上的设备。 此外,还有成百上千的模型,它们不共享公共访问接口(甚至接近)。

首先,您必须具体了解您感兴趣的模型。

此外,一些供应商还提供额外的“驱动程序”,将IP摄像机作为多媒体设备公开,例如“用于IP摄像机的DirectShow驱动程序”。 在大多数情况下,这些都是供应商特定的,不适用于其他相机。

接下来的机会是相机实现了一个众所周知的流媒体协议,在这种情况下,一些通用驱动程序也可以正常工作。

或者,只要您是C#guy,就可以检查IP摄像机的HTTP / CGI API,并在代码中自行实现流式传输,通过HTTP / TCP / UDP连接与设备发送和接收数据。

我曾经使用过directShow.net库 。 它使您可以访问DirectShow的大多数function,其中之一是捕获。 如果您可以在DirectShow中使用ip网络摄像头,也可以在程序中使用它。

和你一样的问题就像你一样,这是我用c#开发或定制Ip相机解决方案的最后一年项目。 但是我浪费了我的时间,通过浏览来获取用C#编写的任何可以轻松访问ip camera流的代码,我很快就找到了第三方Ozeeki sdk。 但是这个是试验并且在一周内到期并且也不会工作。或者可能是Ozeeki想要他们的网站的反向链接。 首先,你必须限制自己选择一个相机。 在我的情况下,我有一个HIkvision网络摄像头。 只需从此处下载适用于海康威视摄像头的设备网络SDK: http ://www.hikvision.com/en/us/download_more.asp? id = 1482

提取它,您可以在SDK文件夹中找到4个子文件夹。 在“doc”文件夹中,您将找到“Device Network SDK Programming Manual”,打开它并展开“Programming Guideline”树。 单击主过程API参考或预览模块过程。 在这里,您将找到所有路线图,您需要采取哪些步骤来调用function以从相机获取实时流。 所有函数的声明都在“基本接口定义”树中展开,并逐一读取它们。 游戏还没有结束,但刚刚开始; 具有所有function的SDk是用C / C ++非托管代码库编写的。并且不能在Manged C#项目解决方案参考中添加。 所以你必须为从相机中获取流的所有这些包装器做一个包装器,并从c#中调用它们。通过文档手册,它们是什么function。 在Twitter上关注我: https : //twitter.com/CodingVampire祝你好运