Появилась задача установить в офисе камеры наблюдения. Я то сразу понял, что надо искать с поддержкой mjpeg, чтобы потом без всяких ffmpeg выводить картинку на сцену для оператора на ресепшен. Думаю, возьму mjpeg и интегрирую за 5 минут, тем более с mjpeg я уже был знаком.
Оказывается, у mjpeg есть еще куча нюансов о которых я не знал и при вставке конструкции:
<img src="http://192.168.100.100/action/stream?subject=mjpeg" >
Я увидел это:
Оказывается, мои камеры (Трассир, будь ты неладен) отдают очень специфический mjpeg с интересным набором заголовков.
И тут понеслось, я там много за день никогда не гуглил. И вот под вечер, нашел форум с ответом 6 летней давности и заюзал код:
$camID = (int) strip_tags($_GET['id']);
if(!empty($camID)) {
$server = "192.168.100.".$camID;
$port = 80;
$url = "/action/stream?subject=mjpeg";
set_time_limit(0);
$fp = fsockopen($server, $port, $errno, $errstr, 30);
if (!$fp) {
header('Content-Type: image/jpeg');
readfile('/var/www/html/web/img/loadCam.jpg');
} else {
$urlstring = "GET ".$url." HTTP/1.0\r\n\r\n";
fputs ($fp, $urlstring);
while ($str = trim(fgets($fp, 4096)))
header($str);
fpassthru($fp);
fclose($fp);
}
} else {
header('Content-Type: image/jpeg');
readfile('/var/www/html/web/img/loadCam.jpg');
}
Теперь я передаю в id= окончание IP камеры и скрипт возвращает картинку в нормальном формате mjpeg!
Нижний Новгород, Россия
На форуме: SmoKE_xDDD