Smoke

 
<<< Назад

Хитрый MJPEG или укрощение строптивого

Появилась задача установить в офисе камеры наблюдения. Я то сразу понял, что надо искать с поддержкой 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!

Ужас.

Обсуждение (0) (4)

Смотрите так же:
13.03.2023 Debounce настройка в z2m
06.03.2023 Боремся с mysql и жором места на диске
24.10.2021 Определяем выключен ли свет по камере о_О
18.10.2021 Опять прокси WS! Теперь для KeenDNS+NGINX
08.06.2021 Парсим информер с Яндекс.Погоды
13.01.2021 Не разговаривает Алиса через облако?
15.12.2020 Разгоняем Xiaomi Home
04.11.2020 Проксирование WebSocket с wss:// -> ws://
02.11.2020 Как получить время езды до работы?
02.06.2020 Стилизация штатного редактора кода, часть 2
01.06.2020 Распознавание речи - бесплатно, просто, быстро.
01.06.2020 Стилизация штатного редактора кода
29.01.2020 Парсим данные баланса из ЛК Билайн (Update)
28.01.2020 Camshoter на свой лад
21.01.2020 Google Location + Yandex Maps, на свой лад
19.01.2020 Получение Я.Погоды из сценария
17.01.2020 Рассказ хейтера сцен в MJDM. Часть 2
17.01.2020 Как можно НЕ использовать сцены в MJDM. Часть 2
16.01.2020 Перезагружаем роутер Zyxel из MJDM
12.12.2019 Как подружить Camshoter и обычную вебку
07.10.2019 Управление планшетом из сцен/WEB
07.10.2019 Использование злосчастных WebSoccet
17.01.2020 ~DELETED~
23.07.2019 Как можно НЕ использовать сцены в MJDM. Часть 1.

Нижний Новгород, Россия

На форуме: SmoKE_xDDD