大家好我有各种网络摄像头我想嵌入我的网站
http://81.137.212.183:4483/GetData.cgi
问题是相机有时会停机,所以我需要在尝试渲染之前检查它们是否在c#中处于活动状态:
<img height="240" width="320" src="http://81.137.212.183:4483/GetData.cgi" />
请有人建议我如何检查cgi在c#或其他推荐中是否有效。如果我简单地加载cgi并且它已关闭它会导致浏览器崩溃
一项建议是使用以下代码:
以下方法的问题是网站永远加载,并且从未显示过收藏夹图标http://www.camsecure.co.uk/
newImage = new Image();
function LoadNewImage() {
var unique = new Date();
document.images.webcam.src = newImage.src;
newImage.src = "http://collectart.dyndns.org:4484/Jpeg/CamImg.jpg?time=" + unique.getTime();
}
function InitialImage() {
var unique = new Date();
newImage.onload = LoadNewImage();
newImage.src = "http://collectart.dyndns.org:4484/Jpeg/CamImg.jpg?time=" + unique.getTime();
document.images.webcam.src = "http://collectart.dyndns.org:4484/Jpeg/CamImg.jpg?time=" + unique.getTime();
document.images.webcam.onload = "";
}
答案 0 :(得分:2)
首先,您需要在第一个链接上放置一些安全性。看来相机设置是公开的,任何人都可以使用。
如果唯一的问题是漫长的加载时间会减慢网站的其余部分,您可以将图片加载到iframe
而不是直接加载到图片代码中 - 然后挂起只在iframe中:
<iframe src="http://81.137.212.183:4483/Simple/home.htm?IMG"></iframe>
要检查IP摄像头是否已启动,您只需尝试获取主机页面:
using System.Net.Http;
...
var uri = new Uri("http://81.137.212.183:4483/Simple/index.htm");
var task = new HttpClient().GetAsync(uri);
if (task.Wait(TimeSpan.FromSeconds(1)) && task.Result.IsSuccessStatusCode)
{
// SUCCESS!
}
else
{
// FAILURE... try next camera
}
但是,如果相机可用,图像.cgi位置仍然会失败。在这种情况下,即使您获得成功,最好加载iframe。
答案 1 :(得分:0)
应该注意的是,有一些安全的方法可以执行此操作,这些方法不需要C#,它将与任何支持Internet浏览器的设备一起查看相机图像,这些图像将自动显示存储在磁盘上的最后一个接收到的相机图像,如果相机不可用。
更多信息:Showing Secure Methods Using PHP To Display Your IP Cameras
唐