mirror of
https://github.com/scottlamb/moonfire-nvr.git
synced 2025-11-13 07:11:44 -05:00
support multiple sample file directories
This is still pretty basic support. There's no config UI support for renaming/moving the sample file directories after they are created, and no error checking that the files are still in the expected place. I can imagine sysadmins getting into trouble trying to change things. I hope to address at least some of that in a follow-up change to introduce a versioning/locking scheme that ensures databases and sample file dirs match in some way. A bonus change that kinda got pulled along for the ride: a dialog pops up in the config UI while a stream is being tested. The experience was pretty bad before; there was no indication the button worked at all until it was done, sometimes many seconds later.
This commit is contained in:
@@ -99,9 +99,9 @@ state:
|
||||
|
||||
* a SQLite database, typically <1 GiB. It should be stored on flash if
|
||||
available.
|
||||
* the "sample file directory", which holds the actual samples/frames of
|
||||
H.264 video. This should be quite large and typically is stored on a hard
|
||||
drive.
|
||||
* the "sample file directories", which hold the actual samples/frames of
|
||||
H.264 video. These should be quite large and are typically stored on hard
|
||||
drives.
|
||||
|
||||
(See [schema.md](schema.md) for more information.)
|
||||
|
||||
@@ -134,23 +134,27 @@ You can configure the system through a text-based user interface:
|
||||
|
||||
$ sudo -u moonfire-nvr moonfire-nvr config 2>debug-log
|
||||
|
||||
In the user interface, add your cameras under the "Edit cameras" dialog.
|
||||
There's a "Test" button to verify your settings directly from the dialog.
|
||||
In the user interface,
|
||||
|
||||
After the cameras look correct, go to "Edit retention" to assign disk space to
|
||||
each camera. Leave a little slack (at least 100 MB per camera) between the total
|
||||
limit and the filesystem capacity, even if you store nothing else on the disk.
|
||||
There are several reasons this is needed:
|
||||
1. add your sample file dirs under "Edit cameras and retention"
|
||||
2. add cameras under the "Edit cameras and streams" dialog.
|
||||
There's a "Test" button to verify your settings directly from the dialog.
|
||||
Be sure to assign each stream you want to capture to a sample file
|
||||
directory.
|
||||
3. Assign disk space to your cameras back in "Edit cameras and retention".
|
||||
Leave a little slack (at least 100 MB per camera) between the total limit
|
||||
and the filesystem capacity, even if you store nothing else on the disk.
|
||||
There are several reasons this is needed:
|
||||
|
||||
* The limit currently controls fully-written files only. There will be up
|
||||
to two minutes of video per camera of additional video.
|
||||
* The rotation happens after the limit is exceeded, not proactively.
|
||||
* Moonfire NVR currently doesn't account for the unused space in the final
|
||||
filesystem block at the end of each file.
|
||||
* Moonfire NVR doesn't account for the space used for directory listings.
|
||||
* If a file is open when it is deleted (such as if a HTTP client is
|
||||
downloading it), it stays around until the file is closed. Moonfire NVR
|
||||
currently doesn't account for this.
|
||||
* The limit currently controls fully-written files only. There will be up
|
||||
to two minutes of video per camera of additional video.
|
||||
* The rotation happens after the limit is exceeded, not proactively.
|
||||
* Moonfire NVR currently doesn't account for the unused space in the final
|
||||
filesystem block at the end of each file.
|
||||
* Moonfire NVR doesn't account for the space used for directory listings.
|
||||
* If a file is open when it is deleted (such as if a HTTP client is
|
||||
downloading it), it stays around until the file is closed. Moonfire NVR
|
||||
currently doesn't account for this.
|
||||
|
||||
When finished, start the daemon:
|
||||
|
||||
@@ -168,7 +172,6 @@ been done for you. If not, Create
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/moonfire-nvr run \
|
||||
--sample-file-dir=/var/lib/moonfire-nvr/sample \
|
||||
--db-dir=/var/lib/moonfire-nvr/db \
|
||||
--http-addr=0.0.0.0:8080
|
||||
Environment=TZ=:/etc/localtime
|
||||
|
||||
@@ -197,6 +197,8 @@ The general upgrade procedure applies to this upgrade.
|
||||
Version 2 adds:
|
||||
|
||||
* recording of sub streams (splits a new `stream` table out of `camera`)
|
||||
* support for multiple sample file directories, to take advantage of
|
||||
multiple hard drives (or multiple RAID volumes).
|
||||
* records the RFC-6381 codec associated with a video sample entry, so that
|
||||
logic for determining this is no longer needed as part of the database
|
||||
layer.
|
||||
|
||||
Reference in New Issue
Block a user