kuroneko-san / php-onvif
PHP Onvif 库,用于连接 Onvif 设备
dev-master
2020-03-25 09:15 UTC
This package is not auto-updated.
Last update: 2024-09-23 15:46:09 UTC
README
基于https://github.com/ltoscano/ponvif的分支,增加了 WS-Discovery 实现和一些代码修正。
ONVIF PHP 实现
此软件模块可以使用 ONVIF 协议(HTTP SOAP 请求)控制网络视频设备,并通过 UDP 多播扫描支持的网络设备。
使用方法
发现
<?php require 'class.ponvif.php'; $onvif = new Ponvif(); $result = $onvif->discover(); var_dump($result);
示例结果(海康威视和 Dahua IP 网络摄像头)
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) - 设备响应超时;默认 "2"
setDiscoveryBindIp('192.168.1.5') - 选择用于发现请求的以太网卡;默认 "0.0.0.0"
setDiscoveryHideDuplicates(false) - 禁用重复过滤(某些设备可能发送多个响应);默认 "true"
获取媒体流
<?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) { }
等等...
- 获取系统日期
- 获取系统功能
- 获取视频源
- 获取现有配置文件
- 获取可用的服务
- 获取设备信息
- 获取流 URI
- 获取从摄像头抓取快照的 URI
- 获取可用的预设
- 获取给定节点的信息
- 转到指定的预设
- 删除指定的预设
- 设置指定的预设
- 执行相对移动
- 执行相对移动和缩放
- 执行绝对移动
- 开始连续移动
- 开始连续移动和缩放
- 停止移动