ZoneMinder

ZoneMinder 是一款免费的、开源的闭路电视软件,为 Linux 开发,支持 IP、USB 和模拟摄像机。「ZoneMinder is a free, open source Closed-circuit television software application developed for Linux which supports IP, USB and Analog cameras.」

Github stars Tracking Chart

ZoneMinder

ZoneMinder 的所有文档现在都在 https://zoneminder.readthedocs.org

概述

ZoneMinder 是一个集成的应用程序集,它提供了一个完整的监控解决方案,允许捕获、分析、记录和监控任何 CCTV 或安全摄像机连接到一个基于 Linux 的机器。它被设计为运行在支持 Video For Linux (V4L) 接口的发行版上,并且已经过 BTTV 卡上的摄像机、各种 USB 摄像机的测试,也支持大多数 IP 网络摄像机。

联系开发团队

在我们的 github 论坛上创建一个问题之前,请阅读我们的发帖规则:https://github.com/ZoneMinder/ZoneMinder/wiki/Gith...

我们的 Docker 文件已经移动

请在这里对 ZoneMinder Dockerfile 提出问题: https://github.com/ZoneMinder/zmdockerfiles

安装方法

从软件包库中安装

这是推荐的安装 ZoneMinder 到系统中的方法。ZoneMinder 的软件包在以下发行版中得到维护。

  • Ubuntu 通过 Isaac Connor 的 PPA 安装
  • 蝶变(Debian)从他们的默认软件库中获取
  • RHEL/CentOS 和克隆版通过 RPM 融合
  • Fedora 通过 RPM 融合
  • OpenSuse 通过第三方软件库
  • Mageia 来自他们的默认软件库
  • 通过 AUR 的 Arch
  • Gentoo 通过 Portage Overlays

如果你的发行版没有存放 ZoneMinder 软件包的存储库,那么我们鼓励你建立自己的软件包,而不是从源代码建立。虽然每个发行版都有不同的地方,使它与其他发行版不同,但它们通常都很相似,足以让你把其他发行版的软件包构建说明改编为自己的。

不鼓励从源代码构建

过去,在你的系统上安装 ZoneMinder 需要通过传统的 configure、make、make install 命令从源代码构建。为了让 ZoneMinder 构建,必须事先确定并安装所有的依赖项。初始化和 logrotate 脚本必须在构建后手动复制到位。可选的软件包,如 jscalendar 和 Cambozola,必须手动安装。解除安装可能会留下陈旧的文件,这可能会在升级时造成问题。说到升级,当需要升级时,所有这些手动步骤都必须再次重复。

今天有更好的方法可以为你做很多事情。目前的开发团队和其他志愿者一起,在提供必要的资源以避免从源码构建方面取得了很大的进展。

构建一个 ZoneMinder 包

将 ZoneMinder 打包成一个软件包,并不比从源码构建难。事实上,如果你过去已经成功地从源代码构建了 ZoneMinder,那么你可能会发现这些步骤会更容易。

在构建软件包时,最好在一个单独的环境中进行,专门用于开发。这可以简单到创建一个虚拟机,使用 Docker,或者使用 mock。只需要一个 "Oops",你就会后悔在你的生产服务器上做这项工作。

最后,如果你想从主分支建立一个开发快照,建议你首先使用 ZoneMinder 的官方版本建立你的软件包。这将有助于识别你可能遇到的任何问题是由构建过程引起的,还是主干分支中的新问题。

请访问我们的 ReadtheDocs 网站,了解发行版的具体说明。

软件包维护者

许多 ZoneMinder 配置变量的默认值在构建时无法通过 autotools 或 cmake 来配置。我们增加了一个名为 zmeditconfigdata.sh 的工具,允许软件包维护者在不修补源代码的情况下操作 ConfigData.pm 中存储的任何变量。

例如,假设我创建了一个新的 ZoneMinder 包,其中包含 cambozola JavaScript 文件。然而,在默认情况下,cambozola 支持是关闭的。要解决这个问题,可以在打包脚本中加入以下内容:

./utils/zmeditconfigdata.sh ZM_OPT_CAMBOZOLA yes

注意,zmeditconfigdata.sh 应该在运行 cmake 或 configure 之前,从根构建文件夹中调用。

Docker

Docker 是一个在隔离的容器中运行应用程序的系统。ZoneMinder 和 ZM webserver 将使用本资源库中的 Docker 文件运行。然而,仍需努力确保 ZM 的主要功能能够正常工作,并有相应的文档。

贡献模式和开发

  • 源码托管在 GitHub
  • 在 GitHub 上报告问题

在 Slack 或论坛上提出问题/功能请求

我们非常欢迎拉动请求! 如果你想做贡献,请遵循以下步骤。虽然第三步是可选的,但它是首选。

  1. 分叉该版本
  2. 在我们的 GitHub Issues Tracker 上开一个问题。按照问题模板来描述你发现的错误或安全问题。请注意,功能请求或问题应发布在我们的用户论坛或Slack频道。
  3. 创建你的特性分支(git checkout -b 456-my-new-feature)
  4. 提交您的修改 (git commit -am 'Added some feature') 我们希望您能 "尽早提交,经常提交",而不是把所有的修改都集中在一次提交中。
  5. 推送你的分支到 github 上的分叉(git push origin 456-my-new-feature)
  6. 创建新的拉动请求
  7. 然后,团队将审查、讨论并希望合并你的修改。

Overview

Name With OwnerZoneMinder/zoneminder
Primary LanguagePHP
Program language (Language Count: 16)
Platform
License:GNU General Public License v2.0
Release Count91
Last Release Name1.36.33 (Posted on 2023-02-23 21:41:01)
First Release Namev1.25 (Posted on )
Created At2013-04-12 14:21:36
Pushed At2024-04-27 14:48:32
Last Commit At2024-04-27 10:48:32
Stargazers Count4.8k
Watchers Count250
Fork Count1.2k
Commits Count23.9k
Has Issues Enabled
Issues Count1978
Issue Open Count149
Pull Requests Count1645
Pull Requests Open Count12
Pull Requests Close Count317
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

ZoneMinder

Bounty Source
Join Slack

All documentation for ZoneMinder is now online at https://zoneminder.readthedocs.org

Overview

ZoneMinder is an integrated set of applications which provide a complete surveillance solution allowing capture, analysis, recording and monitoring of any CCTV or security cameras attached to a Linux based machine. It is designed to run on distributions which support the Video For Linux (V4L) interface and has been tested with video cameras attached to BTTV cards, various USB cameras and also supports most IP network cameras.

Contacting the Development Team

Before creating an issue in our github forum, please read our posting rules:
https://github.com/ZoneMinder/ZoneMinder/wiki/Github-Posting-Rules

Our Dockerfile has moved

Please file issues against the ZoneMinder Dockerfile here:
https://github.com/ZoneMinder/zmdockerfiles

Installation Methods

Install from a Package Repository

This is the recommended method to install ZoneMinder onto your system. ZoneMinder packages are maintained for the following distros:

If a repository that hosts ZoneMinder packages is not available for your distro, then you are encouraged to build your own package, rather than build from source. While each distro is different in ways that set it apart from all the others, they are often similar enough to allow you to adapt another distro's package building instructions to your own.

Building from Source is Discouraged

Historically, installing ZoneMinder onto your system required building from source code by issuing the traditional configure, make, make install commands. To get ZoneMinder to build, all of its dependencies had to be determined and installed beforehand. Init and logrotate scripts had to be manually copied into place following the build. Optional packages such as jscalendar and Cambozola had to be manually installed. Uninstalls could leave stale files around, which could cause problems during an upgrade. Speaking of upgrades, when it comes time to upgrade all these manual steps must be repeated again.

Better methods exist today that do much of this for you. The current development team, along with other volunteers, have taken great strides in providing the resources necessary to avoid building from source.

Building a ZoneMinder Package

Building ZoneMinder into a package is not any harder than building from source. As a matter of fact, if you have successfully built ZoneMinder from source in the past, then you may find these steps to be easier.

When building a package, it is best to do this work in a separate environment, dedicated to development purposes. This could be as simple as creating a virtual machine, using Docker, or using mock. All it takes is one “Oops” to regret doing this work on your production server.

Lastly, if you desire to build a development snapshot from the master branch, it is recommended you first build your package using an official release of ZoneMinder. This will help identify whether any problems you may encounter are caused by the build process or is a new issue in the master branch.

Please visit our ReadtheDocs site for distro specific instructions.

Package Maintainers

Many of the ZoneMinder configuration variable default values are not configurable at build time through autotools or cmake. A new tool called zmeditconfigdata.sh has been added to allow package maintainers to manipulate any variable stored in ConfigData.pm without patching the source.

For example, let's say I have created a new ZoneMinder package that contains the cambozola javascript file. However, by default cambozola support is turned off. To fix that, add this to the packaging script:

./utils/zmeditconfigdata.sh ZM_OPT_CAMBOZOLA yes

Note that zmeditconfigdata.sh is intended to be called, from the root build folder, prior to running cmake or configure.

Docker

Docker is a system to run applications inside isolated containers. ZoneMinder, and the ZM webserver, will run using the
Dockerfile contained in this repository. However, there is still work needed to ensure that the main ZM features work
properly and are documented.

Contribution Model and Development

Pull requests are very welcome! If you would like to contribute, please follow
the following steps. While step 3 is optional, it is preferred.

  1. Fork the repo
  2. Open an issue at our GitHub Issues Tracker.
    Follow the issue template to describe the bug or security issue you found. Please note feature
    requests or questions should be posted in our user forum or Slack channel.
  3. Create your feature branch (git checkout -b 456-my-new-feature)
  4. Commit your changes (git commit -am 'Added some feature')
    It is preferred that you 'commit early and often' instead of bunching all
    changes into a single commit.
  5. Push your branch to your fork on github (git push origin 456-my-new-feature)
  6. Create new Pull Request
  7. The team will then review, discuss and hopefully merge your changes.

Analytics

To the top