网络摄像头流 - 以可变的时间间隔将图像流式传输到图像控制?

发布于 2024-09-10 20:00:22 字数 164 浏览 9 评论 0原文

我遇到一个问题,连接速度慢的用户无法正确获取我的图像源。

我使用 Ajax 计时器每秒向 Ajax 更新面板内的图片框发送新图像。

因此,如果他们的连接速度非常慢,则一张图像在下一张图像进入之前无法完全加载,因此他们永远无法获得完整的图片......

有什么想法吗?

I'm having a problem where users with a slow connection aren't getting my image feed properly.

i'm sending them new images every second to a picturebox inside an Ajax Update panel, using an Ajax Timer.

so if their connection is really slow, one image doesnt load fully before the next one comes in, so they never get the whole picture...

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

想念有你 2024-09-17 20:00:25

在 JavaScript 中使用图像 OnLoad 事件。换句话说,在最后一张图像未完全加载之前不要加载新图像。

也许您不应该使用更新面板。图像标签(包括其大小、外观和位置)保持不变;这是改变的源头。我建议不要更新所有内容,而是在客户端执行以下操作:

  1. 首先,加载第一个图像(没有更新面板)。
  2. OnLoad 事件的侦听器添加到客户端的 中。
  3. 当图片完全加载后,通过向服务器查询更新的图片来重新加载它。例如,您可以考虑使用 ASP.NET 页面 Camera.aspx 来提供从相机抓取的最新图片。要确保页面确实被查询,请将 元素的 src 属性更改为 Camera.aspx?t=1Camera.aspx?t=2

在服务器端(所以这里没有JavaScript),抓取的图像存储在数据库中,所以Camera.aspx 将查询最后存储的记录,检索它并直接发送到客户端(指定适当的 Response.ContentType 并使用 Response.OutputStream )。

为了获得更好的视觉响应,您可能还需要考虑并行使用两个图像元素:加载第一个图像元素时,显示第二个图像元素,反之亦然。它可能更好,但我不确定,所以在选择合适的方法之前先进行测试。

Use image OnLoad event in JavaScript. In other words, do not load a new image until the last one is not completely loaded.

Probably you shouldn't use Update panel. The image tag (including its size, look and position) remains the same; it's the source which changes. Rather than updating everything, I suggest to do the following on client side:

  1. At the beginning, load the first image (without Update panel).
  2. Add a listener to the OnLoad event to <img /> on client side.
  3. When the picture is fully loaded, reload it by querying the server for a more recent picture. For example, you may consider having an ASP.NET page Camera.aspx which serves the most recent pictures grabbed from the camera. To be sure the page is really queried, change the src property of <img /> element to Camera.aspx?t=1, Camera.aspx?t=2, etc.

On server side (so no JavaScript here), the grabbed images are stored in database, so Camera.aspx will query for the last stored record, retrieve it and send directly to the client (specifying appropriate Response.ContentType and using Response.OutputStream).

To achieve better visual response, you may also want to consider using two image elements in parallel: when the first one is loading, the second is displayed, and vice versa. It might be better, but I'm not sure, so test before choosing the appropriate method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文