cURL下载相机图像(http请求)

时间:2013-02-25 23:44:32

标签: c++ image curl camera

我已经安装了cURL,我可以从网站下载图像,并且工作正常。

以下是代码:

#define CURL_STATICLIB
#include <stdio.h>
#include <stdlib.h>
#include </usr/include/curl/curl.h>
#include </usr/include/curl/stdcheaders.h>
#include </usr/include/curl/easy.h>

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
   size_t written = fwrite(ptr, size, nmemb, stream);
   return written;
}

int main(void) {
   CURL *curl;
   FILE *fp;
   CURLcode res;

   char *url = "http://www.example.com/test_img.png"; 
   char outfilename[FILENAME_MAX] = "/home/c++_proj/output/web_req_img.png";
   curl = curl_easy_init();
   if (curl) {
       fp = fopen(outfilename,"wb");
       curl_easy_setopt(curl, CURLOPT_URL, url);
       curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
       curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
       res = curl_easy_perform(curl);
       /* always cleanup */
       curl_easy_cleanup(curl);
       fclose(fp);
   }
   return 0;
}

我还有一个dlink DCS-930L相机。我可以轻松地将我的相机连接到静态IP地址,并且我能够通过登录相机(例如http://192.168.1.5)来查看相机上的实时视频。 我不需要任何特殊的软件或任何东西来开始观看视频。

现在,我想使用cURL从相机下载图像。但我不知道该怎么做。 有人可以告诉我,或者提供一些代码吗? 我想要做的就是捕获(采样)一些正在流式传输的图像。 我如何知道何时提出请求,何时是图像之间的边界。

我真的很感激一些可以帮助我的建议和代码。

Ť

1 个答案:

答案 0 :(得分:0)

根据本相机手册[1],您需要使用Java或ActiveX插件来接收和观看视频:

  

请确保您拥有最新版本的Java应用程序   安装在您的计算机上以确保在查看时正常运行   Java模式下的视频。 Java应用程序可以免费下载   来自Sun的网站(http://www.java.com)。

     

当您连接到相机的主页时,系统将提示您   下载ActiveX。如果要使用ActiveX查看视频   图像而不是Java,那么你必须下载ActiveX。

这表明抓取图像比简单地发出HTTP请求更困难。

[1] http://www.dlink.com/us/en/support/product/-/media/Consumer_Products/DCS/DCS%20930L/Manual/DCS%20930L_Manual_EN_US.pdf