dev-refactor/codestyle
dev-refactor/codestylePHP Onvif library to connect with Onvif devices
MIT
The Requires
The Development Requires
by KuroNeko-san
by Rick
PHP Onvif library to connect with Onvif devices
Fork of https://github.com/ltoscano/ponvif with WS-Discovery implementation plus some code fixes., (*1)
ONVIF PHP implementation, (*2)
This software module can control network video devices with ONVIF protocol (HTTP SOAP requests) and scan network for supported devices via UDP multicast., (*3)
<?php require 'class.ponvif.php'; $onvif = new Ponvif(); $result = $onvif->discover(); var_dump($result);
Example result (Hikvision and Dahua IP cameras), (*4)
array (size=2) 0 => array (size=6) 'EndpointReference' => array (size=1) 'Address' => string 'urn:uuid:2925be82-4d50-11b4-82c8-c42f905c18f8' (length=45) 'Types' => string 'dn:NetworkVideoTransmitter tds:Device' (length=37) 'Scopes' => string 'onvif://www.onvif.org/type/video_encoder onvif://www.onvif.org/Profile/Streaming onvif://www.onvif.org/type/audio_encoder onvif://www.onvif.org/hardware/RVi-IPC11S onvif://www.onvif.org/name/RVi-IPC11S onvif://www.onvif.org/location/' (length=233) 'XAddrs' => string 'http://192.168.1.205/onvif/device_service http://[fe80::c62f:90ff:fe5c:18f8]/onvif/device_service' (length=97) 'MetadataVersion' => string '10' (length=2) 'IPAddr' => string '192.168.1.205' (length=13) 1 => array (size=6) 'EndpointReference' => array (size=1) 'Address' => string 'uuid:2e15cbab-9b44-4074-836d-0bccd8632b3f' (length=41) 'Types' => string 'dn:NetworkVideoTransmitter' (length=26) 'Scopes' => string 'onvif://www.onvif.org/location/country/Russia onvif://www.onvif.org/name/RVi onvif://www.onvif.org/hardware/RVi-IPC33M onvif://www.onvif.org/Profile/Streaming onvif://www.onvif.org/type/Network_Video_Transmitter onvif://www.onvif.org/extension/unique_identifier' (length=261) 'XAddrs' => string 'http://192.168.1.201/onvif/device_service' (length=41) 'MetadataVersion' => string '1' (length=1) 'IPAddr' => string '192.168.1.201' (length=13)
setDiscoveryTimeout(5) - timeout for device response; default "2", (*5)
setDiscoveryBindIp('192.168.1.5') - choose ethernet card for discovery request; default "0.0.0.0", (*6)
setDiscoveryHideDuplicates(false) - disable duplicate filtering (some devices may send more than one response); default "true", (*7)
<?php require 'class.ponvif.php'; $onvif = new Ponvif(); $onvif->setUsername('admin'); $onvif->setPassword('password'); $onvif->setIPAddress('192.168.1.108'); // In some cases you need to set MediaUrl manually. You can find it in "XAddrs" key (see above). // $onvif->setMediaUri('http://192.168.1.108:3388/onvif/device_service'); try { $onvif->initialize(); $sources = $onvif->getSources(); $profileToken = $sources[0][0]['profiletoken']; $mediaUri = $onvif->media_GetStreamUri($profileToken); var_dump($mediaUri); } catch(Exception $e) { }
and more ..., (*8)
PHP Onvif library to connect with Onvif devices
MIT