【问题标题】:PHP MJPEG stream from remote location to accessibly webserverPHP MJPEG 流从远程位置到可访问的网络服务器
【发布时间】:2017-11-14 06:36:52
【问题描述】:

我目前正在使用 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 流而不是这个静态图像吗?

【问题讨论】:

  • 最好跳过 PHP 并配置您的 Web 服务器来进行代理。你用的是什么服务器?

标签: php stream remote-access live-streaming mjpeg


【解决方案1】:

通过以下代码,我能够将 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);
}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多