PORT STATE SERVICE VERSION
554/tcp open rtsp?
|_rtsp-methods: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER,USER_CMD_SET
5000/tcp open soap gSOAP 2.8
| http-methods:
|_ Supported Methods: HEAD OPTIONS
|_http-server-header: gSOAP/2.8
<?php
if (isset($_REQUEST["get"]) and $_REQUEST["get"]==true){
Header('Accept-Ranges:bytes');
Header('Connection:keep-alive');
Header('Content-type: multipart/x-mixed-replace;boundary=ffserver');
passthru('ffmpeg -rtsp_transport udp -i "rtsp://admin:ваш_пароль@ip_адрес_камеры:554/onvif2" -s 320x240 -f mpjpeg pipe:');
}
<html>
<head>
<title>RTSP to MJPEG</title>
</head>
<body>
<img src="rtsp.php?get=1" width="640" height="480" />
</body>
</html>
<?php
set_time_limit(0);
ini_set('display_errors', 5);
declare(ticks = 1);
// Функция, перехватывающая сигналы
function sig_handler($signo) {
global $sock, $msgsock;
socket_close($msgsock);
socket_close($sock);
die('Daemon dead');
}
// Регистрируемые сигналы
pcntl_signal(SIGTERM, "sig_handler");
// Форкаем процесс
$pid = pcntl_fork();
if ($pid == -1) {
die('Could not fork '.PHP_EOL);
} else
if ($pid) {
die('Die parent process.');
} else {
// Новый процесс, запускаем главный цикл
posix_setsid(); // Отцепляемся от терминала
$address = '192.168.0.45'; // сетевой интерфейс, который слушаем
$port = 10025; // порт на нем
$folder = 'video/'; //куда хранить
$data = false;
$br="\r\n";
$img = false;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
die('Не удалось выполнить socket_create(): причина: '.socket_strerror(socket_last_error()));
}
if (socket_bind($sock, $address, $port) === false) {
die('Не удалось выполнить socket_bind(): причина: '.socket_strerror(socket_last_error($sock)));
}
socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1); // указываем таймаут
if (socket_listen($sock, 4) === false) {
die('Не удалось выполнить socket_listen(): причина: '.socket_strerror(socket_last_error($sock)));
}
socket_set_nonblock($sock); // запрещаем блокировку сокита
$pid = pcntl_fork();
if ($pid == -1) { die('Не удалось сделать многозадачным'); }
if ($pid == 0) { echo 'I been live '.PHP_EOL.$br; }
$pid = pcntl_fork();
if ($pid == -1) { die('Не удалось сделать многозадачным'); }
if ($pid == 0) { echo 'I been live '.PHP_EOL.$br; }
do {
sleep(1);
if (($msgsock = socket_accept($sock)) === false) {
/* В многопоточности постоянно такая лажа */
} else {
/* Отправляем инструкции. */
$msg = '220 ESMTP ready'.$br;
socket_write($msgsock, $msg, strlen($msg));
do {
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
echo 'Не удалось выполнить socket_read(): причина: '.socket_strerror(socket_last_error($msgsock)).$br;
break;
}
if (!$buf = trim($buf)) {
continue;
}
if ($data>0 and $buf!='.') {
switch ($img) {
case 0:
$kay=explode('; ', $buf);
if ($kay[0]=='Content-Disposition: attachment') $img=1;
break;
case 1:
$img_buf=$buf;
$img=3;
break;
case 2:
break;
case 3:
$kay=explode('------=====', $buf);
if ($kay[0]=='--') {
$img_buf=base64_decode($img_buf);
file_put_contents($folder.$addr.'/'.$data.'.jpg', $img_buf);
try {
$db=new mysqli('localhost','логин_бд','пароль_бд','название_бд');
$db->query('SET NAMES utf8');
$db->query("insert into mod_motion (camera, filename, file_type, time_stamp, pub) values(2, '/mnt/motion/$addr/$data.jpg', 1, '".date('Y-m-d H:i:s')."', 0);");
$db->close();
} catch (Exception $e) {
echo 'Error send mysql: '.$e->getMessage().$br;
}
$img_buf='';
$img=2;
} else {
$img_buf.=$buf;
}
break;
}
} else {
$kay=explode(' ', $buf);
switch ($kay[0]) {
case 'HELO':
$talkback = '250 Daemon-SMTP stub';
break;
case 'EHLO':
$addr = '';
socket_getpeername($msgsock, $addr);
$talkback = '250-tariffs.com.ua Hello '.$addr."\r\n".'250 AUTH LOGIN PLAIN'; // ['.$_SERVER['REMOTE_ADDR']."]
//echo $br.$talkback.$br;
break;
case 'AUTH':
if ($kay[1]=='LOGIN') $talkback = '334 VXNlcm5hbWU6'; //.base64_encode("Username:");
if ($kay[1]=='PLAIN') $talkback = '235 2.7.0 Authentication successful';
break;
case 'emFiYml4QGkudWE=': // > [email protected]
$talkback = '334 UGFzc3dvcmQ6'; //.base64_encode("Password:");
break;
case 'dGVzdA==': // > test
$talkback = '235 2.0.0 Authentication successful';
//235 2.7.0 Authentication successful
//235 OK Authenticated
break;
case 'MAIL':
if ($kay[1][0]=='F') $talkback = '250 OK'; //250 OK
if ($kay[1][0]=='T') $talkback = '250 Accepted'; //250 Accepted
break;
case 'RCPT':
$talkback = '250 OK';
break;
case 'DATA':
$talkback = '354 Enter message, ending with "." on a line by itself';
$data=time();
break;
case '.':
$talkback = '250 OK id='.time();
$data=false;
$img=false;
break;
case 'QUIT':
$talkback = '221 2.0.0 Bye'; //221 closing connection
socket_write($msgsock, $talkback.$br, strlen($talkback.$br));
break 2;
default:
$talkback = '500 unrecognized command'; // 502 5.5.2 Error: command not recognized
}
socket_write($msgsock, $talkback.$br, strlen($talkback.$br));
}
//echo "C:$buf\r\nS:".$talkback.$br;
} while (true);
socket_close($msgsock);
}
} while (true);
socket_close($sock);
}
unset($sock);
+36 |
6064
49
|
+38 |
2093
26
|
К регистратору не смог подключить. Те она видится но стоит буква «N» на видео и все.
щаз Бангуг спрашивает посылать новую или деньги
Это провал, разочарован.
Так же расстроило само качество картинки — на 1080 ну никак не тянет.
Похоже тупо 720 растянули.
ХЗ почему раньше не смог.
И картинка пошла.
Только на полноценную работу это всё равно не тянет — ПТЗ не работает (хотя когда подключал ту же Ескам то работало) звука нет, настройки недоступны (у других IP камер можно настройки записи подкрутить к примеру) и регистратор время от времени жалуется на потерю связи…
Могу тоже самое сказать «ХЗ почему раньше не смог.» ;)
Спасибо!
onvif менеджером из под винды видится, реалтайм видео не показывает, но головой двигать можно даже без авторизации,
порт 554 закрыт,
открыты 23, 8899(onvif), 8800, 7050, 5051, 5050, 5040.
Может быть кто знает и подскажет как сие чудо подключить к стороннему приложению? ну например tinycam на андроиде.
для подключения к ивидеон делал так, только айпишник она сама выбирает после перезагрузки и не всегда тот же, а перегружается часто
У меня нет…
И можно по подробнее, как вы узнали айпи?
однако, вдруг вам пригодится, там все просто, в проге XMEye (я уже был зарегистрирован в китайском облаке) запускаете поиск камер (+ в правом верхнем углу, на втором экране просто нажать кнопку серчь) и сразу в списке камер будет ее серийный идент и айпи.
Если есть специалисты, подскажите, есть ли приложения под андроид под работу как сервер камер?
Чтобы можно было настроить проброс портов в роутере на один адрес, а эта программа управляла/показывала поток всех камер с домашней сети. Есть ли возможность переделать RTSP поток в MJPEG (для трансляций на сайт).
2) возможность переделать RTSP поток в MJPEG (для трансляций на сайт) — если камера не умеет сама отдавать в HTTP, то костылями как я указывал в статье или попробуйте ffserver поднять, но опять же тут уровень хостинга должен быть выше бесплатного (vps купить).
Организовать видео на сайт можно при помощи разных средств. Последнее про которое я читал — Сервис для организации трансляций «Линия», ссылка на гиктаймс, вроде как есть бесплатная версия.
Если хотите что-то свое более менее универсальное —
Вам нужен сервер на базе Linux, поставить туда motion (предварительно собрать с поддержкой rtsp), он же будет выдавать вам поток в ogg (для вывода на сайте средствами html5).
P.S.> Все в принципе можно развернуть на Raspberry pi3 в домашней сети, ну а дальше проброс портов сделать. На Rpi3 через motion можно несколько камер подключить и обрабатывать
Mjpeg не понравился частотой кадров. Raspberry pi3 раза в 2-3 производительнее Raspberry pi b.
На самом деле, в планах посмотреть б\у компутер на котором сделать сервер видео-наблюдения. Цена вопроса — 2-3к рублей. Из минусов — повышенное потребление электричества и шум).
php, python. java… etc — тут согласен:)
Простой echo-бот.
2) Более сложный бот на php (с балалайкой и медведями) — habrahabr.ru/company/netologyru/blog/326174/
3) HowTo от Мусковчан — mySKU.me/blog/china-stores/48213.html
По SMTP пришлет первый кадр движения. Она сама отправляет почтой куда Вы ей укажите…
Стандартная фишка дешёвых камер…
Вопрос что вы хотите получить на выходе…
Прослойка в виде smtp вообще не нужна. Достаточно создать своего бота и постить в канал картинки)
Какую бюджетную видеокамеру посоветуете выбрать для ночного наблюдения за лодкой с мотором на берегу реки, находясь в палатке? Камеру предполагается спрятать в обрывистом берегу в нише и направить на привязанную к берегу лодку.
Вот требования:
1. Наличие инфракрасной подсветки.
2. Передача сигнала по WiFi на смартфон (Андроид) на расстояние до 10м.
3. Включение камеры по датчику движения с активацией вибросигнала смартфона.
4. Автономное питание от литиевого аккумулятора, или повербанка.
5. Компактность.
6. Бюджетная цена.
7. Использование не частое (3-4 раза летом).