HTTP経由でIPカメラからJPEG画像を受信したいと考えています。私はCプログラムでこの目的のためにLIBCURLを使用しています。カメラは、次のURLで、単一のイメージを返します。libcurlでMJPEGストリーミング
"http://143.205.116.14?image&res=full&x0=0&y0=0&x1=2944&y1=1920"
のlibcurlを使用して、私は単一の画像を受信し、コールバック関数で.jpgファイルに書き込むことができます。ただし、次のように連続ストリーミングのために、カメラがGETリクエストを受け付けます。
"GET /mjpeg&res=full&x0=0&y0=0&x1=2944&y1=1920 HTTP/1.1\r\n HOST:143.205.16.14\r\n\r\n"
私はどのように私はlibcurlの中に、このGETリクエストを指定しないと思いまして。 curl_easy_setopt()で使用できますか?画像が連続して受信し、コールバックによって保存されているように、私はGETメソッドを使用するにはどうすればよい
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
size_t written;
written = fwrite(ptr, size, nmemb, stream);
return written;
}
int main()
{
curl = curl_easy_init();
if(curl) {
fp = fopen("C:\\trans.txt","wb");
curl_easy_setopt(curl, CURLOPT_URL, "http://143.205.116.14?image&res=full&x0=0&y0=0&x1=2944&y1=1920");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
fclose(fp);
}
:
は、現時点では私は、単一の画像を取得し、書込データのコールバック関数の中で保存するには、次のコードを使用します関数?
上記のプログラムでこの完全URL(連続ストリーム用)を使用しました。しかし、それは立ち往生し、どんなイメージもキャプチャしません。 – umair
このURLをブラウザで使用すると、何かが得られますか? libcurlは何も特別なことをしません。単にHTTP経由でリクエストを送信します。 wiresharkを使用して、送信しているものを正確に確認し、必要なリクエストであることを確認できます。ブラウザで動作しない場合、libcurlでは動作しません(ほとんどの場合)。 –