从远程位置到可访问Web服务器的PHP MJPEG流
我目前正在使用MJPEG_拖缆,它将我的相机变成一条流,在网上观看。这是完美的 问题是,我有一个封闭的网络,因此只能从一个位置访问它,这里描述为Web服务器:从远程位置到可访问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
[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服务器来执行代理。你用的是什么服务器?