我已经使用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 { }
}
Run Code Online (Sandbox Code Playgroud)
但我还需要从IP摄像头获取流.任何想法最好的方法是什么?
Rog*_*ger 13
用来自同一个AForge.net的MJPEGStream解决了它:)
MJPEGStream stream = new MJPEGStream("http://192.168.2.5:8080/videofeed");
stream.NewFrame += new NewFrameEventHandler(video_NewFrame);
stream.Start();
Run Code Online (Sandbox Code Playgroud)
IP 摄像机在 Windows 中没有特定的媒体接口/API,它们只是 LAN 上的设备。此外,还有成百上千的模型,它们不共享通用的访问接口(甚至接近)。
因此,首先,您必须具体说明您感兴趣的型号。
此外,一些供应商还提供额外的“驱动程序”,将 IP 摄像机公开为多媒体设备,例如“IP 摄像机的 DirectShow 驱动程序”。在大多数情况下,这些是特定于供应商的,并且不能与其他相机一起使用。
下一个机会是相机实现了众所周知的流协议,在这种情况下,一些通用驱动程序也可能运行良好。
或者,只要您是 C# 人员,您就可以检查 IP 摄像机的 HTTP/CGI API,并在代码中自己实现流式传输,通过 HTTP/TCP/UDP 连接与设备发送和接收数据。
| 归档时间: |
|
| 查看次数: |
40749 次 |
| 最近记录: |