Я использую PHP-библиотеку с открытым исходным кодом для связи с IP-камерой с поддержкой Onvif.
В библиотеке отсутствовала одна функция, GetSnapshotUri, которая возвращает URL, где можно получить снимок основного потока.
Вот источник: http://pastebin.com/ekJa4D2h
Вот главная страница:
<?php
require 'class.ponvif.php';
$onvif = new Ponvif();
$onvif->setUsername('admin');
$onvif->setPassword('admin');
$onvif->setIPAddress('192.168.1.100');
try
{
$onvif->initialize();
$sources = $onvif->getSources();
$profileToken = $sources[0][0]['profiletoken'];
$uri = $onvif->media_GetSnapshotUri($profileToken);
}
catch(Exception $e)
{
print $e;
}
?>
По какой-то причине функция isFault верна, и я понятия не имею, почему.
XML действителен, я проверил его с помощью Wireshark.
У кого-нибудь есть другая камера к этому, если это работает?
Я пробовал с 2 разными камерами, Grandstream и Hikvision.
Также с ONVIF Device Manager v2.2.250 все работает как надо.
Я знаю, что это длинный выстрел, но я понятия не имею.
исправить здесь: http://pastebin.com/ryqxFjdR
mediaurl вместо getnapshoturl в функции.
Других решений пока нет …