прошу совета по IP камере

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Aven
Сообщения: 529
Зарегистрирован: Сб мар 12, 2016 6:33 pm
Откуда: Ухта, Россия

Re: прошу совета по IP камере

Сообщение Aven »

Ну решение на виндовс со сторонним ПО, извините....
Я сделал так:

Код: Выделить всё

# cat rtsp2jpeg.sh
ffmpeg -ss 2 -i rtsp://admin:[email protected]/stream_url -f image2 -y -qscale 0 -frames 1 /tmp/1.jpeg 
TheForum
Сообщения: 146
Зарегистрирован: Сб авг 06, 2016 2:11 am
Откуда: Рига

Re: прошу совета по IP камере

Сообщение TheForum »

Да если просто картинку получить - так с Hikом вобще все на раз-два:

http://login:pass@Cam_IP/Streaming/channels/1/picture - и вот вам текущий скриншот....

SDK тут:

http://overseas.hikvision.com/en/download_83.html

На их портале ( http://www.hikvisioneurope.com/portal/) почему то закрыли доступ к API и документации - но у меня есть если что :)

nick7zmail, вопрос на верное больше к тебе -на хик можно накладывать инфу на стрим камеры - т.е. скажем смотрите удаленно видео и видите заодно температуру котла, в помещении итд.. Спрашивал как то у Сергея - он сказал можно сделать только на Линуксе - ну и я как то забросил эту идею..Хотя видел как работает в живую..

Пример вывода нескольких данных на видеопоток:

1.xml - пример XML, который генерируется автоматически при запросе к post.php

php file:

<?php

$CONNSTRING = "http://api:[email protected]/Video/inpu ... lays/text/";
$CONNSTRING2 = "http://api:[email protected]/Video/inpu ... lays/text/";

if ($_GET['position'] == '1')
{
$xml='
<?xml version="1.0" encoding="UTF-8" ?>
<TextOverlay xmlns="http://www.hikvision.com/ver10/XMLSchema" version="1.0">
<id>1</id>
<enabled>true</enabled>
<posX>16</posX>
<posY>460</posY>
<message>'.$_POST["sensor"].': '.round($_POST["value"],2).'°</message>
</TextOverlay>
';

file_put_contents('1.xml', $xml);
exec('curl -T 1.xml '.$CONNSTRING.'1');
}

if ($_GET['position'] == '2')
{
$xml='
<?xml version="1.0" encoding="UTF-8" ?>
<TextOverlay xmlns="http://www.hikvision.com/ver10/XMLSchema" version="1.0">
<id>2</id>
<enabled>true</enabled>
<posX>16</posX>
<posY>490</posY>
<message>'.$_POST["sensor"].': '.round($_POST["value"],2).'°</message>
</TextOverlay>
';

file_put_contents('2.xml', $xml);
exec('curl -T 2.xml '.$CONNSTRING.'2');
exec('curl -T 2.xml '.$CONNSTRING2.'2');
}

if ($_GET['position'] == '3')
{
$xml='
<?xml version="1.0" encoding="UTF-8" ?>
<TextOverlay xmlns="http://www.hikvision.com/ver10/XMLSchema" version="1.0">
<id>3</id>
<enabled>true</enabled>
<posX>16</posX>
<posY>520</posY>
<message>'.$_POST["sensor"].' - '.round($_POST["value"],2).'°</message>
</TextOverlay>
';

file_put_contents('3.xml', $xml);
exec('curl -T 3.xml '.$CONNSTRING.'3');
}

if ($_GET['position'] == '4')
{
$xml='
<?xml version="1.0" encoding="UTF-8" ?>
<TextOverlay xmlns="http://www.hikvision.com/ver10/XMLSchema" version="1.0">
<id>4</id>
<enabled>true</enabled>
<posX>16</posX>
<posY>550</posY>
<message>'.$_POST["sensor"].': '.round($_POST["value"],2).'W</message>
</TextOverlay>
';

file_put_contents('4.xml', $xml);
exec('curl -T 4.xml '.$CONNSTRING.'4');
}
if ($_GET['reset'] == 'yes')
{
$xml='
<?xml version="1.0" encoding="UTF-8" ?>
<TextOverlay xmlns="http://www.hikvision.com/ver10/XMLSchema" version="1.0">
<id>1</id>
<enabled>false</enabled>
</TextOverlay>
';
file_put_contents('reset.xml', $xml);
exec('curl -T reset.xml '.$CONNSTRING.'1');

$xml='
<?xml version="1.0" encoding="UTF-8" ?>
<TextOverlay xmlns="http://www.hikvision.com/ver10/XMLSchema" version="1.0">
<id>2</id>
<enabled>false</enabled>
</TextOverlay>
';
file_put_contents('reset.xml', $xml);
exec('curl -T reset.xml '.$CONNSTRING.'2');

$xml='
<?xml version="1.0" encoding="UTF-8" ?>
<TextOverlay xmlns="http://www.hikvision.com/ver10/XMLSchema" version="1.0">
<id>3</id>
<enabled>false</enabled>
</TextOverlay>
';
file_put_contents('reset.xml', $xml);
exec('curl -T reset.xml '.$CONNSTRING.'3');

$xml='
<?xml version="1.0" encoding="UTF-8" ?>
<TextOverlay xmlns="http://www.hikvision.com/ver10/XMLSchema" version="1.0">
<id>4</id>
<enabled>false</enabled>
</TextOverlay>
';
file_put_contents('reset.xml', $xml);
exec('curl -T reset.xml '.$CONNSTRING.'4');
}

//exec('curl -T test.xml http://api:[email protected]/Video/inp ... meOverlay');

?>

xml fail:


<?xml version="1.0" encoding="UTF-8" ?>
<TextOverlay xmlns="http://www.hikvision.com/ver10/XMLSchema" version="1.0">
<id>1</id>
<enabled>true</enabled>
<posX>16</posX>
<posY>460</posY>
<message>: 0°</message>
</TextOverlay>

Примерный вариант Сергея - не проверенный:

$CONNSTRING = "http://api:[email protected]/Video/inpu ... lays/text/";

$value=getGlobal('Object.Property');

$xml='
<?xml version="1.0" encoding="UTF-8" ?>
<TextOverlay xmlns="http://www.hikvision.com/ver10/XMLSchema" version="1.0">
<id>1</id>
<enabled>true</enabled>
<posX>16</posX>
<posY>460</posY>
<message>Data: '.$value.'°</message>
</TextOverlay>
';

file_put_contents('1.xml', $xml);
exec('curl -T 1.xml '.$CONNSTRING.'1');

Может как то прикрутим к Mажорику?
Немного желания, терпения и времени - и все получится :)
Aven
Сообщения: 529
Зарегистрирован: Сб мар 12, 2016 6:33 pm
Откуда: Ухта, Россия

Re: прошу совета по IP камере

Сообщение Aven »

TheForum класс! работает побыстрее ffmpeg! Выложите куда-нибудь документацию на API пожалуйста.
Насчет текста, можно его выводить на HTML5 Canvas, будет работать кросплатформенно.
TheForum
Сообщения: 146
Зарегистрирован: Сб авг 06, 2016 2:11 am
Откуда: Рига

Re: прошу совета по IP камере

Сообщение TheForum »

КАК??? Попробуйте потестить!! Да, если знаете HTML5 - может поиграете с выводом аудиопотока (наверное лучше пилить под хром - так как используют плагин с голосовыми командами) ?? У меня броузер телека поддерживает HTML5 открываю страницу мажорика - все ОК но звука нет :(

API и все что есть по HIKvision интересного попозже куда нить в DROPBOX выложу и оставлю тут линк
Немного желания, терпения и времени - и все получится :)
Aven
Сообщения: 529
Зарегистрирован: Сб мар 12, 2016 6:33 pm
Откуда: Ухта, Россия

Re: прошу совета по IP камере

Сообщение Aven »

Про аудиопоток речи не было, я думал вы картинку на веб-страничке рефрешите :)))

Тогда наверно WebRTC, но что бы наложить туда OSD возможно понадобится сначала декодировать поток, а после наложения закодировать обратно.
Хотя возможно прокатит отрисовать поверх видео WebRTC.
TheForum
Сообщения: 146
Зарегистрирован: Сб авг 06, 2016 2:11 am
Откуда: Рига

Re: прошу совета по IP камере

Сообщение TheForum »

Извиняюсь если немного спутал - про аудиопоток - немного другая опера :) Просто HTML5 вроде бы как имеет поддержку аудио, только вот ее реализация в разных броузерах разная...
Немного желания, терпения и времени - и все получится :)
TheForum
Сообщения: 146
Зарегистрирован: Сб авг 06, 2016 2:11 am
Откуда: Рига

Re: прошу совета по IP камере

Сообщение TheForum »

Получилось вывести данные на видеопоток камеры!!! Т.е. при просмотре удаленно вы увидите вместе с видео и ваши данные, скажем температуру котла итд... В записи (ну если конечно она есть :)) вы сможете посмотреть во сколько произошло то или инное событие.. Моя камера - Hikvision DS-2CD2032..

$CONNSTRING = "http://login:pass@camera_IP/Video/inputs/channels/1/overlays/text/";

//$value=getGlobal('Object.Property'); образец. ниже вывод температуры
$value=getGlobal('Mainsity.Today_temp ');
//echo $value;
$xml='
<?xml version="1.0" encoding="UTF-8" ?>
<TextOverlay xmlns="http://www.hikvision.com/ver10/XMLSchema" version="1.0">
<id>1</id>
<enabled>true</enabled>
<posX>16</posX>
<posY>16</posY>
<message>Temp: '.$value.'°</message>
</TextOverlay>
';

file_put_contents('C:\_majordomo\apps\1.xml', $xml);
//exec('curl -T 1.xml '.$CONNSTRING.'1');
exec('C:\_majordomo\apps\curl.exe -T C:\_majordomo\apps\1.xml '.$CONNSTRING.'1');


Из минусов - русский текст почему то отображается с пробелами после каждой буквы;
$value в xml файле не должно содержать каких то лишних сиволов или данных, иначе не выводится на видеопоток камеры;
В коммандной строке винды получаю обратно статус и код состояния, как его получить в Мажорике не знаю :(
Позже выложу API вроде можно менять размер и цвет выводимого на камеру текста...
Не получилось сразу писать данные в xml фаил - пришлось указать путь к файлу - надо немного попилить :)
Немного желания, терпения и времени - и все получится :)
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: прошу совета по IP камере

Сообщение nick7zmail »

Да, сори...забыл отписаться)) Хотел сразу предложить, чтобы пути использовал полные....
А кстати без промежуточного xml-файла не работает?
exec('C:\_majordomo\apps\curl.exe -T $xml '.$CONNSTRING.'1');
А в МД обратно данные получить как то так...
$answer=exec('C:\_majordomo\apps\curl.exe -T C:\_majordomo\apps\1.xml '.$CONNSTRING.'1');
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
TheForum
Сообщения: 146
Зарегистрирован: Сб авг 06, 2016 2:11 am
Откуда: Рига

Re: прошу совета по IP камере

Сообщение TheForum »

Спасибо, завтра потестю :) Закинул новую тему в Сценарии и алгоритмы.
Немного желания, терпения и времени - и все получится :)
TheForum
Сообщения: 146
Зарегистрирован: Сб авг 06, 2016 2:11 am
Откуда: Рига

Re: прошу совета по IP камере

Сообщение TheForum »

уже потестил :) Без промежуточного файла НЕ работает чего то не хватает. Ответа не вижу.

exec('C:\_majordomo\apps\curl.exe -T $xml '.$CONNSTRING.'1');
$answer=exec('C:\_majordomo\apps\curl.exe -T $xml '.$CONNSTRING.'1');
echo $answer;
Немного желания, терпения и времени - и все получится :)
Ответить