Такс, если кто-то столкнётся с этим, то всё оказалось проще, чем я думал:
Вы создаёте файл, который будет постоянно возвращать то, что отдаёт поток. Загвостка у меня была с заголовком, поэтому ничего не работало. Всё вертится вокруг функции
CURLOPT_WRITEFUNCTION => 'streamCallback'
.
header('Content-Type: multipart/x-mixed-replace; boundary=myboundary');
function streamCallback($curl, $data) {
echo $data;
return strlen($data);
}
$ch = curl_init("$urlcam/cgi-bin/mjpg/video.cgi?channel=1&subtype=1");
curl_setopt_array($ch, [
CURLOPT_USERPWD => "admin:password",
CURLOPT_CONNECTTIMEOUT => 20,
CURLOPT_TIMEOUT => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_HTTPAUTH=>CURLAUTH_DIGEST,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_WRITEFUNCTION => 'streamCallback'
]);
$result = curl_exec($ch);
curl_close($ch);
На сайте уже просто указываете ссылку на ваш php файл в картинке:
<img src="https://website/mjpg.php" width="720" height="480">