-moved all service related code to seperate files.
-split the camera service into 2 systemd services.
-the -i, -c and -d options now function differently to support the
split systemd services.
-internal logging was completely removed. all verbose output will
instead just go to stderr/stdout. will use journalctl for real
time logging instead.
-fixed the magick compile/install script so it will actually run
now.
-fixed a bug in the config file reading functions so it will now
trim off white spaces and line breaks at the ends. doing this
now prevents undefined behaviour if any parameter has a line
break in it.
-service user was added as a config file option. this can be used
to set user name the installed services will run under. the
default user is "mow."
-the install.sh script will now add the default mow user to the
video group making it possible to record footage from webcams
without permission issues.
-pixel sizes for video and thumbnails are now configurable
-the amount of recording and snapshot threads are now
configurable
-changed the default buffer and recording directories to
drop the application name and also drop a level
-service files are now stored in a dedicated dir
-fixed logging so it will capture errors better
-moved folder structure building to rdConfig() and added more
error capturing
-recording fps is now configurable
-removed the web interface. this project will instead continue to
focus on backend operations. external applications can interface
with the buf/rec directories to provide frontend operations.
-removed the magick binary file from the project. magick will
instead be built from source on the target machine for maximum
support for the target architecture.
-stream codec and format are now user configurable.
-recording thumbnail and video formats are now user configurable.
-the live stream is now a part of the camera's main page.
-fixed symm links for the main page not being created on install.
-removed deprecated ffmpeg timeout option.
-copied hls.js as a local file so live streams will still work
without being connected to the internet.
-fixed the -i option that was using /etc instaead of /etc/mow
-the externalized image comparison executable is now configurable
in the config file.
-moved the main index.html and theme.css files to the buffer dir,
moving even more io to the buffer dir.
-the -d option will no longer directly run camera instances. it
will instead utilize systemd to install camera services.
-added -i, -l and -r options to manage camera services.
-the app will now default work and output directories in the
/var/opt directory instead of /var/www/html and /tmp, making
it a better neighbour in the fact that it won't overwrite
existing websites or tmp files.
-install.sh will now create an unprivileged mow user that will
be used to run camera services. all in effort to make the app
a good neighour and follow good security practice.
added a buffer directory so the actual work of image frame capture
and live video recording can be moved off of main storage.
also removed installation of the apache2 http server from
install.sh to make this app more agnostic and leave it up to the
end user to install what ever web server they want.
The fork() architecture from the previous commit is also deemed a
failure. Reverted back to v1.5.t19 code. I'll start from scratch, using
this commit as the new base.
The app was still cutting out last command line arg of my test setup.
Later found out it was the run script limiting the command line arg
count to 3. I extended it out to 8 but I'll need to find a better option
to make it limitless.
Added another debug clause for opencv videoio so it will provide even
more debug information. Going back to implicitly defining FFMPEG as the
videoio for opencv, turns out FFMPEG is the only real stable option to
use when it comes to reading video files with opencv. Any other option
would just severely limit codec and container support.
Added the ability change the video codec via the config file.
Changed the install script to now install the application in the /opt
directory and then symm link to /usr/bin. Doing this allowed me to
create a run script to start the application and enable the
OPENCV_VIDEOIO_DEBUG parameter for opencv. This should make it easier to
diagnose video-io issues with opencv.
Updated the README documentation with all of the changes done to the
application since v1.5.
AI object detection via yolov5 didn't work out too well, in fact it was
crashing the detection threads for whatever reason. I could deep dive
why it was crashing but I think the better solution is to bring back
optical flow detection at the block level. the advantage of this over
object detection is the fact that a block doesn't need to have a whole
object in it.
added object detection code base on yolov5 machine vision model. also
added a stat file so motion and object detection values can be monitored
in real time if used with the 'watch' command.
created setup, build and install scripts to make it easier and
convenient to compile and install the application from source. no plans
distribute pre-compiled binaries because it's just so much easier to
guarantee the application will actually work in the target machine when
compiled by the target machine.