1. 程式人生 > >python實現onvif協議-1

python實現onvif協議-1

from suds.client import Client
from suds.wsse import Security
from suds_passworddigest.token import UsernameDigestToken

class ONVIFService(object):

    def __init__(self, xaddr, user, passwd, url):
        self.url = 'file://'+ url
        self.xaddr = xaddr
        # Create soap client
        self.ws_client = Client(url=self.url,location=self.xaddr)
        self.user = user
        self.passwd = passwd
        security = Security()
        token = UsernameDigestToken(self.user, self.passwd)
        security.tokens.append(token)
        self.ws_client.set_options(wsse=security)
        
    def __getattr__(self, name):
        print(name)
        return getattr(self.ws_client.service, name)

print("onvif starting")
device_service = ONVIFService('http://127.0.0.1/onvif/device_service','admin', '12345','/etc/onvif/wsdl/devicemgmt.wsdl')
ret=device_service.GetServiceCapabilities()
print ret

device_service = ONVIFService('http://127.0.0.1/onvif/Media','admin', '12345','/etc/onvif/wsdl/media.wsdl')
profiles=device_service.GetProfiles()
#print profiles
for profile in profiles:
    print profile._token,profile.Name
    param={"StreamSetup":profile.Name,"ProfileToken":profile._token}
    MediaUri=device_service.GetStreamUri(param)
    print MediaUri.Uri