muammertopcu/php-onvif

此包的最新版本(1.0)没有提供许可证信息。

PHP Onvif 库,用于连接 Onvif 设备

1.0 2023-05-08 14:37 UTC

This package is auto-updated.

Last update: 2024-09-08 17:33:23 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);

示例结果(海康威视和大华 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
  • 获取可用预置
  • 获取特定节点的信息
  • 转到特定预置
  • 删除特定预置
  • 设置特定预置
  • 执行相对移动
  • 执行相对移动和缩放
  • 执行绝对移动
  • 开始连续移动
  • 开始连续移动和缩放
  • 停止移动