2013-11-05 55 views
0

我想從c#獲得Axis IP攝像頭的實時視頻。我想使用套接字編程來獲取數據包並反序列化它們以獲取視頻。有沒有辦法做到這一點?如何使用c#中的套接字編程從IP攝像頭捕獲#

編輯: 視頻是:

http://root:[email protected]/axis-cgi/mjpg/video.cgi 

,我的代碼是:

Socket sock = new Socket(AddressFamily.InterNetwork 
    , SocketType.Stream, ProtocolType.Tcp);  
      sock.Connect("192.168.0.90", 80); 

      if (sock.Connected) 
      { 
       byte[] bytes = new byte[256]; 

       int i = sock.Receive(bytes); 
      } 

但我不能收到任何東西..任何方式來添加用戶名和密碼,或完整的地址尋址套接字?

+0

首先,嘗試找出正確的地址。將瀏覽器指向給定的Ip並找到它用來提供圖像的確切Url。使用這種簡單的方法,您可能只會獲得單個圖像,而不是視頻流,但可以更輕鬆地開始。 – PMF

+0

@PMF我相信,IP是192.168.0.90,我有這個用戶名和密碼。但我不知道如何添加用戶和密碼,我不知道正確的端口,我不知道如何獲得圖片。代碼的做法是什麼? – user2855778

+0

你可以用你的網絡瀏覽器獲得圖片嗎?如果是這樣,請將圖像的URL複製到您的代碼中。這是你需要使用的地址。該端口將最有可能是80. – PMF

回答

0

如果您願意重新使用開源庫,那麼請看看AForge。

http://en.wikipedia.org/wiki/AForge.NET

它處理了一堆的IP攝像機。


如果您不想使用現有庫,則可以將現有的客戶端從另一種語言轉換。這裏是一個用javascript在nodejs中編寫的程序。該客戶端通過http客戶端連接並將圖像保存到磁盤。

https://github.com/mjohnsullivan/axiscam

我不相信它實現的HttpClient或從頭文件系統的作家,因爲它是一項複雜的工作,以得到正確的。

+0

我不想使用任何類似Aforge或Emgu CV的圖書館...... – user2855778

+0

沒問題,但您提供的示例顯示您在構建此類代碼庫時需要幫助。 AForge已經實施了它。如果您正在對其進行編程以瞭解如何執行操作,而不是重複使用,則應逐步通過aforge代碼,瞭解您是否需要http客戶端或服務器,相機在正確連接時使用的協議等。理解它會更容易選擇你想要實現的組件。 – JTew

0

因爲這是一個「服務器」,所以你的相機客戶端無法工作。

您將從cam =連續的jp​​g圖像流中獲得mjpg流。

要獲得這些圖片,流有例如MJPG解碼器在CodePlex上的:http://mjpeg.codeplex.com/