2014-01-31 37 views
0

下面这是我试图捕捉Wanscam IP摄像机但是不工作,现在是提高一些例外情况,并在所有做,我真的不知道什么在如何捕获IP摄像头,支持C#

去的代码

远程服务器返回错误:(401)未经授权。 有时这是例外,但很多时候甚至不知道发生了什么样的异常。

任何人都可以发现一些东西,因为现在谢谢大家。

只有一个按钮的形式,只要这个按钮显示停止循环会绕过更新图片框。

和相机是Wanscam AJ-C2WA-C198 我知道这不是世界上最伟大的相机。

和我的管理员名称和我的密码相匹配。

编辑:: 我注意到在VLC我看到图像后,我再次输入admin和密码,但我已经做了这是奇怪的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()); 
       } 
      } 
     } 

    } 
} 
` 

回答

1

您可以检查,即HTTP端口是设置正确。 (在DDNS上路由或在获取查询中指定)。默认情况下,端口是99,而不是80!

此外,您还可以尝试使用/videostream.cgi?user=<USENAME>&pwd=<PASSWORD> - 它让你MJPEG流,而不是FFMPEG,通过videostream.asf

最后提供的,试着在你的要求来指定creditals:

req.Credentials = new NetworkCredential("<USENAME>", "<PASSWORD>"); 

,并尝试另一个查询参数:loginuse=<USENAME>&loginpass=<PASSWORD>

0

试着在CD或公司网站上找到摄像头的sdk(软件开发工具包)。最重要的是,摄像头SDK是用c/C++编写的,因为性能原因。尝试使用w说唱他们在C#。 在C#中强烈建议不要使用指针,但仅包含微软对非托管代码的向后兼容性的原因。