在PHP中为轴ip摄像机设置代理

时间:2014-12-18 09:52:30

标签: php proxy stream ip-camera mjpeg

我一直在寻找一种从AXIS M1114网络摄像机代理mjpeg流的方法。

使用以下网址设置

http://host:port/axis-cgi/mjpg/video.cgi?resolution=320x240&camera=1

我尝试捕获输出并使用在ubuntu上运行apache服务器的php脚本的用户可以使用它们。

浏览网页寻找答案无济于事我来找你。

我的最终目标是让用户能够像这样链接到代理:

<img src='proxy.php'>

并获取proxy.php中所有内容的详细信息。

我尝试过使用cURL的方式(在这里的类似线程中建议),但我无法让它工作,可能是因为缺乏对内部工作的了解。

目前我非常简单的proxy.php看起来像这样

<?php

    $camurl =   "http://ip:port";
    $campath =  "axis-cgi/mjpg/video.cgi";
    $userpass = "user:pw";  

    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_URL, $camurl + $campath);
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'resolution=320x240&camera=1');
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_USERPWD, $userpass);
    $result = curl_exec($ch);

    header('Content-type: image/jpeg'); 
    echo $result;           
    curl_close($ch);
?>

我的理解是,这将为我的计划产生可接受的输出。可惜。

我的问题是,如果有一个明显的错误,我没有看到。任何更简单的选择/方式来获得我的目标也是受欢迎的。

请指出正确的方向。我很乐意提供我可能错过的任何相关信息。提前谢谢。

解决了编辑:

评论后:

curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);

更改

curl_setopt($ch, CURLOPT_URL, $camurl + $campath);

curl_setopt($ch, CURLOPT_URL, $camurl . $campath);  (mixing up some languages)

最重要的是删除.php文件中的空格,以便标题实际上是它所做的标题。

1 个答案:

答案 0 :(得分:0)

添加

curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

似乎需要将图像显示为图像而不是原始数据。