2014-01-31 36 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#中強烈建議不要使用指針,但僅包含微軟對非託管代碼的向後兼容性的原因。