Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从远程位置到可访问Web服务器的PHP MJPEG流_Php_Stream_Remote Access_Live Streaming_Mjpeg - Fatal编程技术网

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

从远程位置到可访问Web服务器的PHP MJPEG流,php,stream,remote-access,live-streaming,mjpeg,Php,Stream,Remote Access,Live Streaming,Mjpeg,我目前正在使用MJPEG_拖缆,它将我的相机变成一条流,在网上观看。这是完美的 问题是,我有一个封闭的网络,因此只能从一个位置访问它,这里描述为Web服务器: [INTERNET] --- [NETWORK/ROUTER] + --- [WEBSERVER] + ----------------- [CAMERA] + ----------------- [LAPTOP

我目前正在使用MJPEG_拖缆,它将我的相机变成一条流,在网上观看。这是完美的

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

[INTERNET] --- [NETWORK/ROUTER] + --- [WEBSERVER]
                                + ----------------- [CAMERA]
                                + ----------------- [LAPTOP]
                                + ----------------- [PC]
这意味着在内部,从我自己的网络中,我可以访问所有设备,包括摄像头,但从外部,只能访问Web服务器。我想保持这种状态

问题:

我希望能够在Web服务器上显示来自摄像头的MJPEG流

我试过:

MJPEGU拖缆还可以选择显示流的快照。通过Web服务器上的以下代码,我可以从外部获取快照:

<?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从我的内部网络获取数据并显示在Web服务器上,有人知道我可以显示MJPEG流而不是这个静态图像吗?

通过以下代码,我可以将MJPEG从摄像头“隧道”到Web服务器,从外部查看:

<?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);
}
?>

最好跳过PHP,只配置web服务器来执行代理。你用的是什么服务器?