PHP 从远程位置到可访问网络服务器的 MJPEG 流

PHP MJPEG stream from remote location to accessibly webserver

我目前正在使用 MJPEG_STREAMER,它将我的相机变成流,以便在网络上查看。这完美无缺。

问题是,我有一个封闭的网络,因此只能从一个位置访问它,此处描述为网络服务器:

[INTERNET] --- [NETWORK/ROUTER] + --- [WEBSERVER]
                                + ----------------- [CAMERA]
                                + ----------------- [LAPTOP]
                                + ----------------- [PC]

这意味着在内部,从我自己的网络中,我可以访问所有设备,包括相机,但从外部只能访问网络服务器。我想保持这种状态。

问题:

我希望能够在网络服务器上显示来自相机的 MJPEG 流。

我试过了:

MJPEG_STREAMER 还可以选择显示流的快照。在网络服务器上使用以下代码,我可以从外部获取快照:

<?php
header("Content-Type: image/jpeg");
$url = "http://192.168.2.145:8080/?action=snapshot.jpg";
$imgContents = file_get_contents($url);
$image = @imagecreatefromstring($imgContents);
imagejpeg($image);
?>

据我所知,我现在可以使用 PHP 从我的内部网络获取数据以显示在网络服务器上,有谁知道我可以显示 MJPEG 而不是这个静态图像流?

通过以下代码,我能够 'tunnel' 从相机到网络服务器的 MJEPG,以便从外部查看:

<?php
$server = "192.168.2.145";
$port = 8080;
$url = "/?action=stream";
set_time_limit(0); 
$fp = fsockopen($server, $port, $errno, $errstr, 30);
if (!$fp) {
        echo "$errstr ($errno)<br>\n";
} 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);
}
?>