Wie bild von WebCam abfragen



  • Hi,

    ich möchte von einer im Netz stehenden Webcam alle Stunde ein Bild runterladen und speichern.
    Leider hab ich das im Netz stehende jpg nicht ansprechen können.
    Weiß da jemand wie das geht? Hab mich mit sowas bisher noch nicht beschäftigt.
    Danke im Voraus.

    Gruß Mümmel



  • Hallo

    Da es keine allgemeine Lösung gibt solltest du schauen ob der Hersteller deiner Webcam irgendwelche Schnittstellen anbietet. Einige Beispiele kannst du auch über die SuFu zum Stichwort *cam* und *webcam* finden.

    bis bald
    akari



  • Du brauchst 2 Programme. Server und Client.
    Der Server muss die Bilder aufnehmen und zu dem Client schieken.
    Der Server läuft irgendwo im Netzwerk.
    Der Client läuft auf deinem Rechner.
    Du brauchst die IP Adresse und den Port für Server.
    Die IP Adresse ist die IP von dem Rechner im Netzwerk wo das Server Programm laufen wird,
    und den Port kannst du selbst definieren. Z.B 5555
    Du brauchst TServerSocket und TClientSocket VCL.
    Der Server muss ein Bild von der Kamera aufnehmen.
    Zum Beispiel so:

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    #include <vfw.h>
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    HWND VW;
    
    void __fastcall TForm1::BtnVideoSourceClick(TObject *Sender)
    {
    capDlgVideoSource(VW);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::BtnVideoFormatClick(TObject *Sender)
    {
    capDlgVideoFormat(VW);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
    {
    DestroyWindow(VW);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormShow(TObject *Sender)
    {
    VW=capCreateCaptureWindow("Sergey Test",WS_CHILD | WS_VISIBLE, 0, 0, 320, 240, Panel1->Handle,0);
    if(!capDriverConnect(VW,0))
    {
    DestroyWindow(VW);
    Application->MessageBox("Scheiße","",MB_ICONERROR);
    return;
    }
    SetWindowPos(VW, HWND_TOP,0,0,320,240,SWP_NOZORDER);
    capPreviewRate(VW,10);   //Geschwindigkeit
    capPreview(VW, true);    //Start Video
    
    }
    //---------------------------------------------------------------------------
    

    Und dann muss dieses Bild zu dem ClientSocket geschiekt werden.

    PS:
    Entschuldigung für mein Deutsch...



  • Hi,

    vielen Dank, für die Antworten, aber ich hab mich da wohl falsch ausgedrückt. Es geht nicht darum die WebCqm direkt abzufragen, sondern ein davon auf ner Internetseite reingestelltes und ale paar Minuten aktualisiertes Bild. Es soll also nur einfach ein .jpg aus dem Netz von ner Seite runtergezogen werden, aber eben nicht mit Browsermöglichkeiten sondern einfach aus einem C++ (oder Delphi) Programm heraus.

    Gruß Mümmel



  • Du kannst das jpg über die Indy TIdHTTP herunterladen.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       String url="http://www.c-plusplus.net/oop_dummies.jpg";
       TMemoryStream *ms = new TMemoryStream();
       TJPEGImage *jpg = new TJPEGImage();
       IdHTTP1->HandleRedirects = true;
       IdHTTP1->Get(url,ms);
       ms->Position = 0;
       jpg->LoadFromStream(ms);
       Image1->Picture->Assign(jpg);
       delete ms;
       delete jpg;
    }
    


  • Hi,

    danke grt, hat bestens geklappt.
    Jetzt weiß ich endlich mal wozu die Indy-Komponenten gut sind. 😃
    Hab da bisher einen Bogen drum gemacht weil ichs bisher nicht brauchte.

    Gruß Mümmel


Anmelden zum Antworten