ONVIF C++ 库

 

2019年:

https://blog.csdn.net/lichengcheng5945/article/details/99624093

 

https://blog.csdn.net/video_dc/article/details/26080525

 

2014年的:

https://github.com/xsmart/onvifcpplib

这个库支持ProfileS 和ProfileG,目前还在开发当中,现在已经支持Event

下面是一个客户端的例子

int _tmain(int argc, _TCHAR* argv[])
{
    int ret;
    /* 192.168.1.1 is the NVT, 192.168.1.234 is the NVC */
    string url = "http://192.168.1.1/onvif/device_service";
    /* Below is where to receive the event */
    string eventNotify = "http://192.168.1.234:9090/subscription-2";
    string user = "admin";
    string pass =  "admin";
    OnvifClientDevice onvifDevice(url, user, pass);
    _tds__GetCapabilitiesResponse capabilitiesResponse;

    onvifDevice.GetCapabilities();

    OnvifClientMedia media(onvifDevice);
    _trt__GetProfilesResponse profiles;
    media.GetProfiles(profiles);

    OnvifClientEvent onvifEvent(onvifDevice);

    onvifEvent.Subscribe(eventNotify);
    
    OnvifClientEventNotify notify(soap_new());
    
    if ((ret = soap_bind(¬ify, NULL, 9090, 100) == SOAP_INVALID_SOCKET ) ) 
    {
        printf("OnvifClientEventNotify::soap_bind Binding on %d port failed", 9090);
        return 0;
    }

    //Loop to recevie the event
    while(1)
    {
        if( (ret = soap_accept(¬ify)) == SOAP_INVALID_SOCKET) {
            printf("soap_accept accepting failed");
            return 0;
        }

        if ( (soap_begin_serve(¬ify)) != SOAP_OK) {
            printf("soap_begin_serve serve %d failed", ret);
            continue;
        }

        ret = notify.dispatch();
        continue;
    }
    return 0;
}
 

你可能感兴趣的:(c++)