自动登录到网络摄像机
Auto-login into the IP Camera
我有一个网络摄像机,我想在我的网页上显示实时取景。
网络摄像机不允许匿名登录,所以我需要在连接时输入用户名和密码。
我有javascript:
<img src="http://user:password@camera_ip_address/cgi-bin/jpg/image.cgi?" width="640" height="480" name="refresh">
<script language="JavaScript" type="text/javascript">
image = "http://camera_ip_address/cgi-bin/jpg/image.cgi?"
function Start() {
tmp = new Date();
tmp = "?"+tmp.getTime()
document.images["refresh"].src = image+tmp
setTimeout("Start()", 100)
}
Start();
</SCRIPT>
它在火狐中工作正常,但是:
http://user:password@camera_ip_number
不能在其他浏览器中工作(它会弹出一个表单以输入用户名和密码(。
但是在PHP中,您可以使用user:password,我已经通过以下方式进行了检查:
<?php
header('Content-type: image/jpeg');
print( file_get_contents( 'http://user:password@camera_ip_address/cgi-bin/jpg/image.cgi?' ));
?>
当然,它只显示一帧,但您不必输入用户名和密码。
如何使用PHP登录网络摄像机?如果我可以在访问网页时登录一次,我的 javascript 将正常工作,因为浏览器会记住用户名和密码,直到我关闭浏览器。
我不知道如何发送用户名和密码登录。
对不起我的英语。
好的,所以我已经用PHP和JavaScript让它工作了。也许这对其他人有帮助:
将 PHP 文件另存为快照.php:
<?php
$img="http://user:password@camera_ip/cgi-bin/jpg/image.cgi?";
header ('content-type: image/jpeg');
readfile($img);
?>
在 HTML 文件中,添加以下脚本:
<img src="http://domain.com/snapshot.php" width="640" height="380" name="refresh">
<script language="JavaScript" type="text/javascript">
image = "http://domain.com/snapshot.php"
function Start() {
tmp = new Date();
tmp = "?"+tmp.getTime()
document.images["refresh"].src = image+tmp
setTimeout("Start()", 300)
}
Start();
</script>
它在每个浏览器下都可以正常工作。如果我将超时设置为小于 300,则会出现一些滞后。我不知道为什么会这样;也许是互联网连接或网站速度。
你可以改用 Apache mod_rewrite
- PHP 堆栈的开销更少,而且通常可能更快。有关详细信息,请参阅此页面。
选择其中之一。
Apache .htaccess - 您的页面请求http://yoursite/livecam/image.jpg
,这是通过Apache的代理运行到您的相机。
RewriteEngine on
RewriteBase /livecam/
RewriteRule ^image.jpg$ http://user:password@camera_ip_address/cgi-bin/jpg/image.cgi [P]
ProxyPassReverse /livecam/image.jpg http://user:password@camera_ip_address/cgi-bin/jpg/image.cgi
在PHP中,创建一个名为image.php - 您的页面请求http://yoursite/image.php
的文件,它将图像流式传输到任何请求它的地方。
<?php
$file = 'http://user:password@camera_ip_address/cgi-bin/jpg/image.cgi';
if (file_exists($file)) {
header('Content-Type: image/jpeg');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
两者都将通过您的服务器代理图像。在任何公共页面上提供用户名和密码通常是不好的做法,即使攻击者无法损坏任何相关内容。
请参阅readfile()
PHP.net
如果使用 Apache 版本,您的代码将看起来像(将图像.php替换为实时摄像头/图像.jpg(。我还缩短了你的代码。
<img src="http://yourserver/image.php" width="640" height="480" name="refresh">
<script language="JavaScript" type="text/javascript">setTimeout(function() {document.images["refresh"].src = "http://yourserver/image.php?"+math.random();}, 100);</SCRIPT>
IP:port/cgi-bin/jpg/image.cgi?&user=XXX&pwd=XXX
IP:port/cgi-bin/jpg/image.cgi?&usr=XXX&pwd=XXX
IP:port/snapshot.cgi?&user=XXX&pwd=XXX';
IP:port/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=XXX&pwd=XXX';
- 通过Magento的网络服务检索运费
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 如何使用密码检测网络中的状态连接
- ASP.NET网络摄像头显示
- 如何在OpenERP中实现网络摄像头
- 链接两个网页或网络应用程序的最佳方式
- 在ES6中,模块将导致多个网络调用,因为两个模块不能在单个文件中定义
- RabbitMQ与通过网络的stomp适配器
- 输入文本框为空时的阻止按钮asp.网络表单
- 为网络游戏制作动画
- 无法获取vis.js最后一个或第一个选定的网络节点
- 网络语音API-再次讲话(重置句子)
- 如何建立一个网页,检查我的路由器网络接口是否可以访问
- 查找AJAX获取和发布时使用的网络数据的obsolute或可能的估计值
- 如何减少在移动网络应用程序上播放声音的延迟
- 在Android网络应用程序中查找SD卡的路径
- 如何使用神经网络和突触库来制作项目定价估计器
- 自动登录到网络摄像机
- 是否可以从一个或多个摄像机在一个 Html 页面上嵌入两个网络摄像头流