【发布时间】:2010-05-26 10:04:22
【问题描述】:
我正在做一件事,我需要一个网页来从本地客户端计算机流式传输一系列图像。我在这里有一个非常简单的运行:http://jsbin.com/idowi/34
代码极其简单
setTimeout ( "refreshImage()", 100 );
function refreshImage(){
var date = new Date()
var ticks = date.getTime()
$('#image').attr('src','http://127.0.0.1:2723/signature?'+ticks.toString());
setTimeout ("refreshImage()", 100 );
}
基本上,我在客户端机器上使用了一个签名板。我们希望签名显示在网页中,并让他们看到自己在网页中签名(平板电脑没有 LCD 显示给他们看)。所以我设置了一个简单的本地 HTTP 服务器,它获取签名板当前状态的图像并将其发送到浏览器。
这在任何浏览器中都没有问题(在 IE7、8 和 Chrome 中进行了测试),但在 Firefox 中它非常滞后和跳跃,并且无法保持 10 FPS 的速率。有没有人对如何解决这个问题有任何想法?我尝试在 javascript 中创建非常简单的双缓冲,但这只会让事情变得更糟。
此外,对于更多信息,Firefox 似乎正在以正确的帧速率执行 javascript,因为在服务器上请求以恒定的速度进入。但是图像只是不一致地刷新,范围从每秒 5 次一直到每秒 0 次(刷新需要 2 秒)
我也尝试过使用不同的图像格式,结果都一样。我尝试过的格式包括位图、PNG 和 GIF(不过,GIF 在 Chrome 中会导致闪烁的小问题)
有没有可能是 Firefox 以某种方式缓存了我的图片,导致了轻微的延迟?我发送了这些标题:
Pragma-directive:无缓存 缓存指令:无缓存 缓存控制:无缓存 Pragma:无缓存 过期:0【问题讨论】:
-
当然,不要让它每 1/10 秒刷新一次图像......这太离谱了!如果您需要以 10 FPS 的速度运行,使用闪存!
-
@anim 没有太多选择。就是这样或将我们限制在 IE 和 ActiveX 控件中。我的问题是为什么每个浏览器都可以处理它,但 FF。而且无需购买昂贵的 Flash 许可证(并学习如何使用它)
-
setTimeout(refreshImage, 100);- 不要将字符串传递给 setTimeout() 请。 -
没有选项是什么意思?您需要每 1/10 秒刷新一次的东西可能是什么?附言它在 FireFox 中对我来说完全正常,没有延迟,只是在我的项目列表中显示了大量的“图像”。
-
我有一个可能行不通的疯狂想法,但我建议这样做,以便那里的一些大师可以开始一起破解一些东西。获取正在生成的图像并将其转换为矢量,然后使用 HTML5 的
<canvas>标签在浏览器上绘制。
标签: javascript jquery image firefox