【问题标题】:Automatically change camera position using PHP使用 PHP 自动更改相机位置
【发布时间】:2014-09-03 04:39:09
【问题描述】:

我正在为我的网站制作一个应用程序,供访问者查看相机。 我拥有一台可以使用 url 操作的 PT(云台)相机。 我希望我的相机在预先确定的时间(比如每 5 秒一个不同的位置)和背景中随机移动,所以我会在没有任何操作员的情况下移动,但我似乎无法弄清楚如何让它自动移动。 制造商使用 CGI 命令,例如:

myip:myport/decoder_control.cgi?command=39&user=user&pwd=password

(此代码使其转到预设 1)。
如何使用服务器端 php 使用此命令移动相机,使其在 5 秒后移动?

【问题讨论】:

  • 到目前为止您尝试过什么?那个网址是公共访问的吗?用户应该能够控制摄像头,还是您希望服务器自动控制?
  • 我不是一个经验丰富的javascript开发人员,我只是试图让用户控制相机,也失败了。该 url 是公共访问的,通过端口转发。你应该可以在 weahercam.bugs3.com 上看到我的摄像头。我希望服务器自动完成。谢谢你的回复。
  • 所以您正在寻找一种通过 JavaScript “访问”该命令 URL 的方法,以便用户可以控制凸轮,对吗? JS 运行(基本上)客户端,因此对于服务器,您需要另一个解决方案。
  • 我现在看到我的帖子有些混乱,所以我将对其进行编辑以使其更加清晰。
  • 我希望这个答案是有用的,但如果我可以给你一个建议,你应该试着把你的问题分解成更小的、基本的任务,独立解决每一个技术挑战。您需要的所有部分(JS/PHP 中的 HTTP 请求、Cron 作业、调度)都在网上有很好的文档记录;还有很多关于运行 CGI 脚本的内容(这实际上是你的问题:它是否控制相机或斩波器无关紧要)。为给定任务找到程序流程并简化问题是开始编码之前的首要操作之一。

标签: php camera ip cgi


【解决方案1】:

从 PHP 运行 CGI 脚本
您可以从 PHP 执行 HTTP 请求,该请求将加载与命令对应的 URL,从而导致相机改变位置。实现这一目标的一些方法:

如果你只需要执行一个GET请求,并且响应是空的(例如你只需要检查+200 OK代码)或者包含一些非常简单的数据(例如一个字符串),那么file_get_contents是多于够了。
如果您对 HTTP 请求的工作原理没有任何背景,Wikipedia 可能是一个很好的介绍;特别是如果以后您有更复杂的 CGI 命令要发送到您的 PT Cam。

让相机每 5 秒移动一次
这是完全不同的事情。这里的问题是run PHP code periodically and automatically

  • 您可以使用Cron 作业Croncrontab)安排要执行的 PHP 脚本,this questions 会向您解释如何操作。 但是 Cron's minimal time resolution is one minute;每 5 秒移动一次摄像头听起来并不像安排工作,听起来更像是应该由系统服务来处理。
  • 您可以做的是将摄像头从用户用来观看的 PHP 脚本中移出:将上次更新时间存储在文件/数据库中,如果经过的时间大于 5 秒,则运行CGI 脚本。
    这将使您的相机保持静止,除非有人真正在观看。可能会出现其他问题,例如,如果许多用户访问同一个页面并且您的服务器同时处理请求怎么办?您可能会收到几个连续的命令发送到相机。此外,当用户在观看、停留在您的 PHP 页面时,您必须再次找到每 5 英寸移动相机一次的方法。

一种可能的解决方案

  1. 创建一个 PHP 脚本,该脚本在加载后仅在自上次调用至少 5 秒后才运行 CGI 命令(通过存储上次调用的时间)。
  2. 为您的用户创建一个客户端页面,该页面通过 JavaScript 每 5 秒加载一次 PHP 脚本。寻找JavaScript GET request,你会找到足够的信息来填一本书。

同样,这会在您的网络服务器上产生大量流量,仅在这五秒钟的平移时间内。我的建议是移动应该由一些服务器端程序来处理,而不是脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    相关资源
    最近更新 更多