我有一台ipcamera,它/video/feed/1.jpg
以大约5fps的速度被写入(安装为ramdrive)。如果连接不良,有时可能会低于1 fps。我试图每500毫秒更新一次浏览器中的图像,但是我有两个目标:
我试图通过创建图像的md5并将其存储在会话中来实现此目的,如果在下一个浏览器请求中md5不变,则服务器会循环运行直到md5不同为止。服务器也将循环播放,直到md5与上次加载时间匹配为止,这样我可以确定相机已完成创建图像。
该过程按预期工作,但CPU使用率却很高,因此我正在寻求有关改进的建议。
test.php
<?php
session_start();
$imgFile = '/video/feed/1.jpg';
$lastImg = $_SESSION['image'];
$imgMd5 =0;
do {
sleep(.2);
$img = (file_get_contents($imgFile));
$lastMd5 = $imgMd5;
$imgMd5 = md5($img);
if ($lastMd5 != $imgMd5) {
continue;
}
if ($imgMd5 != $lastImg) {
break;
}
} while (0 == 0);
header("Content-type: image/jpg");
$_SESSION['image'] = md5($img);
echo $img;
exit;
?>
JS
<script>
img = new Image
function f() {
img.src = "test.php?rnd=" + Date.now();
img.onload = function() {
feed.src = img.src;
setTimeout(function() {
f();
}, 500);
};
img.onerror= function(){
setTimeout(function() {
f();
}, 500);
};
}
f();
</script>
我真正需要的是 usleep(200000)
sleep(.2)
没有按我预期的那样工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句