2016-11-21 103 views
1

我想運行一些神經網絡和機器學習算法,如使用來自robotic camera (PTZ)的輸入的面部跟蹤來控制相機的運動並訪問揚聲器。Foscam的IP攝像頭R2有API嗎?

我打算購買Foscam的R2,但我沒有使用IP攝像機的經驗。我試圖聯繫Foscam,但他們提供了非常有限的信息,並提請我申請SDK。有誰知道,如果我能在沒有智能手機應用程序的情況下控制相機,而是通過某種編程界面?

關於德國亞馬遜的產品信息,它被寫入NVR兼容ONVIF和FTP服務器(連接到路由器,NAS的硬盤驅動器)。據我所知,ONVIF指定了一個標準,我在Youtube上發現了一些C#ONVIF教程,但我仍不確定這是否意味着肯定有一個R2的API,可以讓我做所有我需要的事情。

有沒有人有足夠的經驗來幫助我?另外,我可以直接將相機連接到樹莓派,並避免在網絡上使用它並直接訪問該功能?

+0

嗨,它工作? – Delta

回答

4

尋找一個SDK/API自己,我發現這個鏈接: http://foscam-uk.com/download/SDK/

它包括HTTP GET PDF文檔的命令到foscam的幾乎所有功能。

+0

是的,我也發現了這一點,我申請了Foscam SDK並獲得了許可,但到目前爲止我還沒有設法實際做過什麼。 – TheMindWithin

0

看一看這個API文檔:http://www.camarasip.es/descarga/IP_Camera_CGI_(SDK).pdf

嘗試一下在你的選擇,例如的瀏覽器與:

http://XXX.XXX.XXX.XXX:XX/cgi-bin/CGIProxy.fcgi?usr=YOURUSER&pwd=YOURPASS&cmd=snapPicture2 

這將返回在您的瀏覽器中的相機JPG快照。也可以使用PTZ控制,例如,

http://XXX.XXX.XXX.XXX:XX/cgi-bin/CGIProxy.fcgi?usr=YOURUSER&pwd=YOURPASS&cmd=ptzMoveUp 

如果成功的話,你應該看到的相機移動,你應該得到的迴應是這樣的:

<CGI_Result> 
    <result>0</result> 
</CGI_Result> 

下一步,這種直接HTTP接口的R2顯然也內置了ONVIF支持。有一個node.js模塊(https://github.com/futomi/node-onvif),我已經可以使用它來連接以獲取一些相機信息,並且我已經能夠使用它來進行一些PTZ控制,但是如果它仍然認爲不會退出。

到目前爲止,我最大的障礙是我找不到任何東西,只能將RTSP視頻流集成到網頁中。以前的Foscam相機,例如8910W具有這種能力。

這裏是ONVIF的代碼,對我來說,到目前爲止的工作:

onvif.startDiscovery(function(info) { 
 
     // Show the device name and the URL of the end point 
 
     console.log('\n********* Retrieved Discovery Info ***********'); 
 
     console.log(JSON.stringify(info, null, ' ')); 
 

 
     // Create an OnvifDevice object 
 
     var device = new onvif.OnvifDevice({ 
 
     xaddr: info.xaddrs[0], 
 
     user: 'YOURUSER', 
 
     pass: 'YOURPASS' 
 
     }); 
 

 
     // Initialize the OnvifDevice object 
 
     device.init(function(error) { 
 
      if (error) { 
 
      console.log('[ERROR] ' + error.message); 
 
      } else { 
 
      // Get the detailed device information 
 
      var device_info = device.getInformation(); 
 
      // Show the result 
 
      console.log('\n********* Retrieved Discovery Info ***********'); 
 
      console.log(JSON.stringify(device_info, null, ' ')); 
 
      var url = device.getUdpStreamUrl(); 
 
      console.log('UDP Stream URL: ' + url); 
 

 
      var profile_list = device.getProfileList(); 
 
      for (var i = 0; i < profile_list.length; i++) { 
 
       console.log('\n********* Retrieved Profile ***********'); 
 
       console.log(profile_list[i]); 
 
       console.log('\nPTZ:'); 
 
       console.log(profile_list[i].ptz); 
 
      } 
 

 
      // The OnvifServicePtz object 
 
      var ptz = device.services.ptz; 
 

 
      if (ptz) { 
 
       console.log('Current Token: ' + device.getCurrentProfile()['token']); 
 

 
       var params = { 
 
       'ProfileToken': device.getCurrentProfile()['token'], 
 
       'Position': { 
 
        x: .5, 
 
        y: 0, 
 
        z: 0 
 
       }, 
 
       'Timeout': 1 
 
       }; 
 

 
       ptz.absoluteMove(params, function(error, result) { 
 
       { 
 
        if (error) { 
 
        console.log('[ERROR] ' + error.message); 
 
        } else { 
 
        console.log(JSON.stringify(result.data, null, ' ')); 
 
        } 
 
       }); 
 
       } else { 
 
       console.log('[ERROR] Your ONVIF network camera does not support the PTZ service.'); 
 
       } 
 
      } 
 
      }); 
 

 
     });

0

我找到了一個稍微更近API doc

您可能還會從python foscam library收集一些信息。對於直接連接 - 如果你的raspi沒有使用以太網端口,你可以得到一個交叉電纜並直接插入,並在該電纜上設置一個小靜態網絡;這將解決您在兩個盒子之間可能遇到的任何帶寬問題。