使用PHP和cURL从安全摄像头获取MJPEG视频流
我有多个自托管网络安全摄像头(Axis 2100,它们很旧),我想向网站广播。摄像头支持MJPG格式的实时流媒体,但为了流媒体播放这些摄像头的视频,我必须将其公开。出于安全原因,我想限制通过我的网站查看这些摄像头,在那里我可以验证用户的身份。由于网络摄像头位于单独的主机上,因此我使用cURL和PHP登录摄像头,获取MJPG图像流,并将实时流回显在网页上使用PHP和cURL从安全摄像头获取MJPEG视频流,php,curl,web,Php,Curl,Web,我有多个自托管网络安全摄像头(Axis 2100,它们很旧),我想向网站广播。摄像头支持MJPG格式的实时流媒体,但为了流媒体播放这些摄像头的视频,我必须将其公开。出于安全原因,我想限制通过我的网站查看这些摄像头,在那里我可以验证用户的身份。由于网络摄像头位于单独的主机上,因此我使用cURL和PHP登录摄像头,获取MJPG图像流,并将实时流回显在网页上 header('content-type: multipart/x-mixed-replace; boundary=--myboundary')
header('content-type: multipart/x-mixed-replace; boundary=--myboundary');
while (@ob_end_clean());
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://XX.XXX.XXX.XX/axis-cgi/mjpg/video.cgi?resolution=320x240');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY | CURLAUTH_ANYSAFE );
curl_setopt($ch, CURLOPT_USERPWD, 'USERNAME:PASSWORD');
$im = curl_exec($ch);
echo $im;
curl_close($ch);
问题是,当我有多个会话试图在同一个浏览器上使用上面的代码访问同一个php页面时,只有一个会话被加载,而其余会话保持空白,最终显示500个内部服务器错误。但是,当通过多个不同的浏览器打开它时,它会工作,性能会降低
最终,我想让它成为一个网络摄像头服务器,在那里我可以从摄像头建立一个输入流连接,并将其广播到多个客户端
我的网站是由GoDaddy在linux服务器上托管的,而我不是在专用服务器上,所以我认为我无法安装任何花哨的开源视频流托管服务器
谢谢你,很抱歉这么长的帖子
-T.Ho我在这里与同一个问题进行了一整夜的殊死搏斗,你详细的问题描述帮助我找出了我的问题所在
- windows上的nginx+phpFastcgi必须使用多个php-cgi.exe配置(某些重新启动的进程问题)。。。但这并不是主要问题(因为您的案例是linux…)
- 从命令行运行多个简单的“WGET httpTargetImgSite”-不要重现问题-可以李>
- direct browser calling of: http://serverip/videoproxy.php
- or calling some html file
<html><body><img src='videoproxy.php' /></body></html>
-直接浏览器调用:http://serverip/videoproxy.php
-或者调用一些html文件
。。。会有问题的。
但该代码不会:
<html><body><script>
document.write("<img src='videoproxy.php?dummy="
+(new Date().valueOf()) +"' />");
</script></body></html>
文件。填写(“”);
(保留img缓存的虚拟唯一编号)