下面是我试图捕获Wanscam ip摄像头的代码,但是现在无法正常工作会引发一些例外情况,并且根本不知道我真的不知道发生了什么
远程服务器返回错误:(401)未经授权。 有时这是例外,但很多时候甚至不知道发生了什么样的例外。
任何人都可以发现一些事情,因为现在谢谢大家。
表单中只有一个按钮,只要此按钮显示停止循环就会更新图片框。
相机是Wanscam AJ-C2WA-C198 我知道这不是世界上最伟大的相机。
我的管理员名称和密码匹配正确。
EDIT :: 我注意到在VLC上我看到该图像后再次输入管理员和密码,但我已经在URL上做了很奇怪的
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace cam01
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public Thread _cameraThread;
private string metaUrl = "http://home-ip-camera.dyndns-server.com/videostream.asf?user=<USER_NAME>&pwd=<PASSWORD>resolution=64&rate=0";
public HttpWebRequest req;
public WebResponse res;
public System.IO.Stream stream;
private void button1_Click(object sender, EventArgs e)
{
if (btnMain.Text.Equals("Start"))
{
if (_cameraThread == null)
_cameraThread = new Thread(new ThreadStart(Run));
_cameraThread.Start();
btnMain.Text = "Stop";
}
else
{
btnMain.Text = "Start";
_cameraThread.Abort();
_cameraThread = null;
}
}
private void Run()
{
while (btnMain.Text.Equals("Stop"))
{
try
{
req = (HttpWebRequest)HttpWebRequest.Create(metaUrl);
req.AllowWriteStreamBuffering = true;
req.Timeout = 20000;
res = req.GetResponse();
stream = res.GetResponseStream();
pictureBox1.Image = Image.FromStream(stream);
res.Close();
}
catch (Exception e)
{
Console.WriteLine("Exception: {0}", e.ToString());
}
}
}
}
}
`
答案 0 :(得分:1)
您可以检查,http端口设置是否正确。 (在DDNS上路由或在get-query中指定)。默认端口是99,而不是80!
此外,您可以尝试使用/videostream.cgi?user=<USENAME>&pwd=<PASSWORD>
- 它会为您提供MJPEG流而非FFMPEG,由videostream.asf
提供
最后,尝试在您的请求中指定信用额度:
req.Credentials = new NetworkCredential("<USENAME>", "<PASSWORD>");
并尝试其他查询参数:loginuse=<USENAME>&loginpass=<PASSWORD>
答案 1 :(得分:0)
尝试在CD或公司网站上找到相机的sdk(软件开发套件)。最近,出于性能原因,Cameras SDK是用c / c ++编写的。试着用C#包装它们。 强烈建议不要在c#中使用指针,但仅仅因为Microsoft Backward兼容非托管代码而包括在内。