问题标签 [zoneminder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
137 浏览

php - 如何从另一台服务器正确获取实时流提要并使用 PHP 返回相同的提要

我有一个ZoneMinder媒体服务器,它通过 http 提供 CCTV 的实时信息。它是对图像流(不是视频)的响应。

现在我制作了一个需要显示实时流提要的第三方 Web 应用程序。我在这里遇到的问题是,我需要在不向 ZoneMinder 服务器发出任何浏览器请求的情况下集成系统,我不想从第三方应用程序后端进行集成并将它们返回到浏览器中。

我为应用程序使用 PHP,到目前为止,我运行了这段代码:

我得到了 ZoneMinder 服务器的预期实时图像流。但是我遇到了几个问题。

当我开始直播(执行上面的代码)时,我的 Web 应用程序的其余部分变得无响应。无法处理对服务器 php 脚本的所有请求(它总是在浏览器开发者控制台的网络选项卡中“挂起”),但仍然可以处理其他文件(如资产文件)的 GET 请求。

我知道在这一点上,我遇到了 PHP 本身而不是 Web 服务器的一些问题。

所以我的问题是从 PHP 服务器向另一台服务器发出实时流请求并将流作为对浏览器的响应的最佳方式是什么。

提前致谢

0 投票
2 回答
200 浏览

php - 尝试创建将启动 Perl 脚本的网页链接

我正在使用带有 Apache2 和 Zoneminder(一个安全摄像头程序)的 Ubuntu 服务器。我有一台具有云台和变焦 (PTZ) 的摄像机(但最终将是三台)。在 Zoneminder 程序(基于 PHP Web 的界面)中,通过页面导航,您可以获得一个包含 PTZ 控件的窗口。它使用一系列对不同 PHP 页面的调用来创建此页面,您可以单击预设按钮并让相机转到设置为预设的位置。

我将设置的摄像头将有两个使用位置,我将它们称为安全和开放。我想创建可以单击的链接,它将发送命令而无需导航到控制窗口。

我发现当您到达 zoneminder 中摄像机 PTZ 的正确区域并按下“1”按钮时,网站会发送命令

它可以从 Ubuntu 服务器上的终端运行,并将相机设置到正确的位置。

更新编辑3:(这就是我现在要做的,所以我从其他尝试清理这篇文章中删除了所有数据)

尝试完全不同的东西,我几乎让它按照我想要的方式工作。我在 .. 中创建了两个名为security.pland open.pl.. 的新文件,/usr/lib/zoneminder/cgi-bin这就是我目前所拥有的 security.pl (open.pl 是相同的,但当然具有不同的预设):

montage.php and console.php我添加以实现此功能的链接中是:

这种方法有效,并且确实可以一键更改相机位置,我现在遇到的唯一问题是这将留下一个空白页面,其中有一个反向链接,显示地址栏中的 perl 脚本的直接链接。

这对我有用,但最终我希望 security/open.pl 脚本自动运行“返回”链接,以便它运行命令并返回到被点击的页面。

我试过print redirect(-url => 'javascript:history.back()');代替这<a href=javascript:history.back()>条线,但这只是给我留下一个空白页,相机不动

对所有这些疯狂感到抱歉......但我很接近......它的设置方式现在确实有效,如果我添加额外的相机应该很容易扩展,如果我没有空白页,它只会得到改进一个反向链接,它会自动返回页面(无需硬编码地址,因为它将链接到不同的页面,有时从本地地址访问,有时从互联网地址访问)。

我还注意到这种方法的一个“安全”问题..如果您知道脚本的名称和位置..它会绕过 zoneminder 登录,因此任何人都可以更改相机位置(哈哈,我猜我不会使用我在这篇文章中使用的名称以防万一)

对于我的情况......风险很低,我很难想出这么多......我确定如何让它检查点击该链接的用户是否被授权这样做Zoneminder .. 这样任何人在没有登录到 zoneminder 的情况下在浏览器中输入链接都将无法运行.. 将更加困难。

我想我将不得不深入研究 PHP 并找出“控制” php 在允许之前检查它的内容,然后找出将其正确添加到 perl 脚本以使其加载执行的页面的方法正确检查然后如果它通过运行命令。但那是另一次了。

0 投票
1 回答
88 浏览

python - 如何将 Perl 的 $1 特殊变量转换为 Python?

我想将包含 perl 中散列的散列转换为 python。这是它的一段 perl 代码:

这是我用 Python 编写的:

我不知道应该如何转换format 和 check keys 的值。任何帮助都会得到帮助。

0 投票
1 回答
580 浏览

kubernetes - Kubernetes 上的 Zoneminder?

我是 Kubernetes 新手。我正在尝试在 Kubernetes 上实现 zoneminder。我从谷歌注意到我发现了在 docker 上实现 zoneminder 的quantumobject,但是在 Kubernetes 上实现它的资源确实更少。我尝试在 Kubernetes 上实现它,但不知何故它没有显示视频流,并且通过跟踪日志我找不到任何解决方案。外面有人试过吗?

我提到的教程是https://github.com/QuantumObject/docker-zoneminder。这是一种在容器上实现 zoneminder 的 docker 方式。所以,我使用了图像并创建了我自己的 yaml 文件,这些文件是 mysql yaml

这是 mysql 的容器,在我创建之后,我会将 IP 地址传递给我的 zoneminder yaml 文件 zm yaml

zoneminder 成功出现,但是当我添加 ip cams 时,这些是错误 错误日志

0 投票
2 回答
3880 浏览

ffmpeg - ffmpeg 是否支持 Jetson 平台的 GPU 加速?

  • 我想在 Jetson-nano 上运行ZoneMinder作为 IP CAM 服务器,但似乎 Jetson nano 无法处理许多使用ffmpeg进行解码的凸轮。

  • 如果我在ZoneMinder上打开三个摄像头,CPU 使用率总是 100%,但 GPU 使用率是 0%,我无法打开更多摄像头。

没有硬件加速的FFMPEG?

在这次讨论中,NV 版主说

Jetson 平台上未启用支持 GPU 的 ffmpeg ...

我知道 NVENC/NVDEC 可以帮助 ffmpeg 硬件加速,但是这些硬件块现在正在 CPU 上执行,而不是在 GPU 上。

jetson-nano 的自定义 FFMPEG 不支持 GPU 加速?

我找到了这个jetson-ffmpeg 存储库,这个存储库可以使用 GPU 加速吗?因为我试过但没有用(仍然使用 CPU 的 NVENC/NVDEC 加速)。

如果 Jetson nano 上的 GPU 确定不支持 ffmpeg 加速,但我想使用 ZoneMinder,有没有更好的方法来解决这个问题?例如使用 GStreamer?

0 投票
0 回答
380 浏览

bash - 在 bash 脚本中使用 curl - 发布身份验证令牌 - 奇怪的行为?

我是编程和脚本的新手,所以如果这很明显,我很抱歉。我曾尝试在其他地方获得帮助,但似乎无法弄清楚。我正在创建一个 bash 脚本,我让 cron 每 X 分钟执行一次,以处理名为“ZoneMinder”的 NVR 安全软件包的运行状态更改。我目前有一个 cron 作业,通过我编写的一个小脚本使用名为 sunwait 的二进制文件。Sunwait 会等到日落或日出,然后执行命令,所以当日落时,我让 sunwait 将 Zoneminder 从“DAY”状态更改为“NIGHT”状态,反之亦然。Cron 作业是在凌晨 1 点和下午 1 点,因此有一个 3-5 小时以上的窗口,系统可以重新启动以进行备份或其他操作,然后运行状态不会改变。这不好,因为我对 DAY/NIGHT 有不同的“区域”和敏感性。

为了登录到 Zoneminder API 以检查当前运行状态。它指示我使用 curl 设置有状态连接并接收身份验证令牌。

我已将此命令行切换为 bash 脚本变量,但它不起作用;它创建 cookies.txt 但不输出令牌。相反,它会吐出 401 Unauthorized 错误。如果我使用我从脚本中回显的 curl 命令并在终端中执行它,它会返回带有令牌的 JSON 数据并创建 cookies.txt,这完全符合我的需要。

这是卷曲部分的代码片段。

这是该片段的输出。

如果我复制并粘贴 curl 命令/usr/bin/curl -XPOST -c /tmp/cookies.txt -d "user=<REDACTED>&pass=<REDACTED>&stateful=1" -sS https://<REDACTED>/zm/api/host/login.json,它会按预期工作。

这是复制和粘贴 echod out curl 命令的输出。为什么这个输出不是 $get_token_file 变量?!

我在这里想念什么?

感谢您的任何建议或见解!

0 投票
0 回答
29 浏览

javascript - 寻找一种方法来超越 Chromium 施加的 6 个 http 限制连接

我正在开发一个电子应用程序。它的主要目的是为 ZoneMinder 展示一个更好的 GUI。

我正在使用 API 和其他东西来访问数据,问题是,直播有一种使用直接访问 cgi 的方法,当你打开超过 6 个流时,下一个流将失败。

我想要一个主视频流(带有选定的监视器),在它下面有一个迷你视频屏幕,可以预览同一组中的其他监视器。

我尝试了许多公式,在任何地方寻找任何解决方案等,但没有运气。

绘制主监视器img的部分代码是:

请注意,流是 mjpeg。当我尝试使用“简单”模式时,即只有一张图像(没有 mjpeg),它可以工作,但是...... 完全没有视频输入。我还尝试检查是否加载了子视频提要以再次重新加载 src,但我遇到了严重的问题,因为我必须将其设置为动态内容(某些组有不同数量的监视器)。

当我使用代码检查器时,我可以看到打开的多个连接,在第 6 个连接之后,我可以在“待处理”中看到很多。经过数小时的抱怨后,我发现这是 Chrome(和许多其他浏览器)施加的限制。然后事情是:

  1. 当我不想使用它们时,有什么方法可以杀死已经打开的流?
  2. 如果没有,实现我想要的最好方法是什么?我的意思是,能够打开多个img而不用担心这个?

如果您想合作或提供帮助,这里是 repo 的链接。

提前致谢!