Changelog¶
DVR-Scan 1.6¶
1.6.1 (In Development)¶
Release Notes¶
Includes various usability enhancements identified since the region editor was launched, and several bugfixes. Minimum supported Python version is now 3.8 (previous versions may continue to work but are not officially supported).
Changelog¶
- [improvement] Add
learning-rate
config option to adjust how the background model is updated - [bugfix] The region editor will now ask before quitting if there are unsaved changes
1.6 (October 15, 2023)¶
Release Notes¶
DVR-Scan greatly improves masking capabilities with the new region editor (user guide):
Multiple regions can now be defined with any shape, size, and complexity. Region data can be saved to a file and loaded again. Regions can also be specified by command line.
There are also several other bugfixes and improvements, such as improved seeking performance.
Changelog¶
- [feature] New region editor
-r
/--region-editor
allows creation of multiple regions without shape restrictions, replaces-roi
/--region-of-interest
- [feature] Multiple regions of interest (rectangular or polygonal) can now be created:
- Using the new region editor by adding the
-r
/--region-editor
flag:dvr-scan -i video.mp4 -r
- New
-a
/--add-region
replaces-roi
/--region-of-interest
option:dvr-scan -i video.mp4 -a 5 5 20 5 20 20 5 20
- Regions can now be saved to a file: press S in the region editor or use
-s
/--save-region
- Regions can now be loaded from a file: press O in the region editor or use
-R
/--load-region
- Config files can specify a region file to use by default with the
load-region
option, replaces theregion-of-interest
setting
- Using the new region editor by adding the
- [feature] New
-fm
/--frame-metrics
option draws motion score on each frame to help tune detection parameters - [cli] Short flag
-v
is now used for--verbosity
, replaced by-V
for--version
- [cli]
-roi
/--region-of-interest
is now deprecated, replaced by region editor and add/save/load region flags- Specifying this option will display the ROI in the new region format allowing you to update usages more easily
- [general] Improved seeking performance, using
-st
/--start-time
is now much faster (#92) -detection-parameters) - [general] Noise reduction kernel can now be disabled by setting
-k
/--kernel-size
to0
(#123) - [general] Include stack traces in logfiles when setting
--verbosity debug
- [bugfix] Add
max-score
option to config file to fix CNT mode always treating first few frame as motion, default is 255.0 #119 - [bugfix] Fix timecode format
HH:MM:SS[.nnn]
being rejected for start/end time (#141) - [bugfix] Fix incorrect RGB mapping for config file (values were treated as BGR instead)
- [other] Config option
timecode
has been renamed totime-code
to match the command-line option - [other] Config options that started with
timecode-
have been renamed to start withtext-
, and are now shared between thetime-code
andframe-metrics
overlays:time-code-margin
is nowtext-margin
time-code-font-scale
is nowtext-font-scale
time-code-font-thickness
is nowtext-font-thickness
time-code-font-color
is nowtext-font-color
time-code-bg-color
is nowtext-bg-color
Known Issues¶
- Some prebuilt archives include documentation which references the
load-region
config option with the incorrect name (region-file
) #153
DVR-Scan 1.5¶
1.5.1 (August 15, 2022)¶
Changelog¶
- [bugfix] Fix crash when opening multiple input videos (#95)
- [bugfix] Fix incorrect warning regarding frame decode failures at end of video
1.5 (July 30, 2022)¶
Release Notes¶
- Significant performance improvements on multicore systems
- Support wildcards/globs as inputs for scanning entire folders (
-i folder/*.mp4
) - Allow use of ffmpeg for better output quality (
-m ffmpeg
) or codec-copying mode (-m copy
) - Configuration files are now supported, see documentation for details
- Can specify config file path with
-c
/--config
, or create advr-scan.cfg
file in your user config folder
- Can specify config file path with
- Windows binaries are now signed, thanks SignPath.io (certificate by SignPath Foundation)
- Experimental Nvidia CUDA® support has been added (set
-b MOG2_CUDA
)- If installing via
pip
, requires manual installation of OpenCV compiled with CUDA support - If downloading Windows version, make sure to download the GPU-enabled build (
dvr-scan-1.5-win64-cuda.zip
) - CUDA-enabled builds are not code signed, and do not include the
CNT
method
- If installing via
- Minimum supported Python version is now 3.7
- Minimum supported OpenCV version is now 3.x
Command-Line Changes¶
- New options:
-c
/--config
- set path to config file-d
/--output-dir
- set directory to write output files (default is working directory)-m
/--output-mode
- set output mode (one of:opencv
,ffmpeg
,copy
)-mo
/--mask-output
- path to write motion mask for analysis--verbosity
and--logfile
- control output verbosity and path to save output
-i
/--input
now supports globs/wildcards to scan entire folders, e.g.-i folder/*.mp4
- Change default value for
-l
/--min-event-length
to 0.1 seconds, previously was 2 frames - Long form of
-roi
has been renamed to--region-of-interest
(previously was--rectangle-of-interest
) -c
is now used for--config
, previously was for--codec
- Add experimental
MOG2_CUDA
option for-b
/--bg-subtractor
- Rename existing
MOG
option toMOG2
--codec
has been removed, the value should now be set using a config file
Changelog¶
- [feature] Configuration file support and new
-c
/--config
argument to specify path to config files (#77)- Breaks existing behavior of
-c
(was previously the shortform of--codec
)
- Breaks existing behavior of
- [feature] Add support for multiple output modes via
-m
/--output-mode
argument (#27, #42) - [feature] Experimental support for GPU-based CUDA MOG2 filter (#12)
- [feature] Video encoding and decoding are now done in parallel with the scanning logic leading to improved performance on most systems (#52)
- [feature] Add support for exporting motion masks via
-mo
/--mask-output
argument- Useful for detailed analysis or tuning of detection parameters
- ffmpeg can be used to generate output videos by specifying
-m ffmpeg
- Codec-copy mode, using ffmpeg, can be used by specifying
-m copy
- [feature] Add
--verbosity
and--logfile
arguments to provide more control over program output - [feature] Allow scanning entire folders using wildcards with
-i
/--input
(#5)- Glob expansion is also performed on each input path directly, so quoted globs also function correctly
- [bugfix] Fix incorrect results when
-st
/--start-time
is set - [bugfix] Event start times are now correctly calculated when using
-fs
/--frame-skip
(#68, #70)- Note that all skipped frames within the event window are included in motion event, thus the calculated start time may be slightly earlier
- [bugfix] Only get screen resolution when required (was causing issues on headless machines)
- [bugfix] Fix output messages conflicting with progress bar shown during scanning
- [bugfix] Output events now start from 1 to align with the event list
- [bugfix] Event end times now include the presentation duration of the last frame
- [bugfix] Small values for
-l
/--min-event-length
are now handled correctly, previously would cause an error - [enhancement] Progress bar now indicates how many events have been detected so far
- [enhancement] Change default value for
min_event_len
to 0.1 seconds, previously was 2 frames (#91)
Known Issues¶
- Attempting to open multiple input videos will cause DVR-Scan to crash, fixed in v1.5.1 (#95)
- Variable framerate videos (VFR) are not fully supported, and will yield incorrect timestamps (#20)
- Video output when using frame skip and
-m opencv
(default output mode) will result in frames missing from the exported videos (#81)- Use
-m ffmpeg
or-m copy
as a workaround
- Use
- Multiple input videos are not supported with
-m ffmpeg
or-m copy
(#86)- Use ffmpeg to concatenate/merge input videos before processing as a workaround
- CUDA builds do not include the
CNT
option for-b
/--bg-subtractor
DVR-Scan 1.4¶
1.4.1 (February 20, 2022)¶
Release Notes¶
This release includes fixes for incorrect event start/end times when using frame skipping, and improvements to the bounding box overlays.
Important: Aside from critical bugfixes, DVR-Scan 1.4.x is the last minor version supporting Python 2.7. Starting from v1.5, the new minimum supported Python version will be 3.6 (see #83 for details).
Changelog¶
- [bugfix] Event start times are now correctly calculated when using
-fs
/--frame-skip
(#68, #70)- Note that event start/end times may still be off by how many frames are skipped due to loss of context with respect to frame-accurate motion detection
- [bugfix] Event end times now take into account the number of skipped frames if
-fs
/--frame-skip
if specified (e.g. it is assumed all skipped frames contained motion) - [bugfix] Bounding box smoothing now takes into account
-fs
/--frame-skip
(#31) - [bugfix] Bounding boxes now cover all frames with motion (#31)
- In v1.4 only the frames after
-l
/--min-event-length
frames had passed were covered
- In v1.4 only the frames after
Known Issues¶
- Variable framerate videos (VFR) are not fully supported, and will yield incorrect timestamps (#20)
- Using
-st
/--start-time
will yield incorrect results - If a motion event happens to be exactly the number of frames specified by
-l
/--min-event-length
, the end timecode will be displayed incorrectly (#90)
1.4 (February 8, 2022)¶
Release Notes¶
In addition to several bugfixes, this release of DVR-Scan adds the ability to draw a bounding box around the area in the frame where motion was detected. There are also several improves when using -fs
/--frame-skip
and/or -df
/--downscale-factor
by ensuring all other option are relative to the original video framerate/resolution.
Important: Aside from critical bugfixes, DVR-Scan 1.4.x is the last minor version supporting Python 2.7. Starting from v1.5, the new minimum supported Python version will be 3.6 (see #83 for details).
Changelog¶
- [feature] Add new
--bb
/--bounding-box
option to draw rectangle around the area in the video where motion was detected- An amount to temporally smooth the box in time can also be specified after
-bb
(e.g.-bb 0.5s
), where the default is 0.1s
- An amount to temporally smooth the box in time can also be specified after
- [bugfix] Processing errors should now return a non-zero exit code
- [bugfix] Allow a maximum window size to be set when using
-roi
(#59):- The
-roi
flag now accepts a maximum window size for the ROI selection window (e.g.-roi 1920 1080
) - If the
screeninfo
package is installed, or you are using a Windows build, videos will automatically be resized to the maximum screen size
- The
- [bugfix] Fix frozen timestamp at beginning of video (#68)
- [bugfix] Fix output videos not including all of the duration specified by
-tb
/--time-before
in certain cases (#68 - [bugfix] Fix event start times not reflecting
-l
/--min-event-length
and-tb
/--time-before
(#68 - [bugfix] Scanning no longer stops suddenly after a frame fails to decode (#62)
- If more than 1 corrupt frame is found, a warning will be displayed with the number of frame decode failures
- If more than 5 frames in a row fail to be decoded, processing will stop and display an error
- [bugfix] When no events have been found, an empty file is no longer created if
-o/--output
is specified - [enhancement]
-k
/--kernel-size
is now relative to the original video resolution, and will be reduced to adjust for-df
/--downscale-factor
if set (#46) - [bugfix] Output videos now have the correct playback speed when using
-fs
/--frame-skip
by reducing the framerate (#70) - [bugfix] The
-l
/--min-event-length
and-tp
/--time-post-event
parameters are now adjusted to compensate for-fs
/--frame-skip
if set (#70) - [bugfix] An erroneus event (false positive) is no longer generated at the beginning of a video when
-l
/--min-event-length
is equal to 1 frame
Known Issues¶
- Variable framerate videos (VFR) are not fully supported, and will yield incorrect timestamps (#20)
- When using
-fs
/--frame-skip
, event start times do not include all of-tb
/--time-before-event
(#68, #70) - When using
-bb
/--bounding-box
, the amount of time covered by-l
/--min-event-length
will be missing bounding box overlays (#31) - Using
-st
/--start-time
will yield incorrect results - If a motion event happens to be exactly the number of frames specified by
-l
/--min-event-length
, the end timecode will be displayed incorrectly (#90)
DVR-Scan 1.3¶
1.3 (May 23, 2021)¶
Release Notes¶
This version of DVR-Scan includes a new, faster background subtraction algorithm (-b CNT
). Results may be slightly different when using this method, so any feedback is most welcome.
Changelog¶
- [feature] Add new
-b
/--bg-subtractor
argument to allow selecting between the MOG and CNT background subtractor types (e.g.dvr-scan -b CNT
). Resolves #48. The following background subtractor types are available:MOG
is the defaultCNT
is a newer, faster algorithm (feedback is welcome)
- [bugfix] When using the
-o
/--output
argument, a file is no longer written to disk if no motion events are found in the input file (#50)
Known Issues¶
- Variable framerate videos (VFR) are not fully supported, and will yield incorrect timestamps (#20)
- Using the
-roi
flag with high resolution videos can result in the window exceeding the size of the monitor (#59) - When using
-tc
/--time-code
the start of the video may have a frozen timestamp (#68) - The kernel size must be manually adjusted when using
-df
/--downscale-factor
(#46) - When using
--frame-skip
, the--min-event-length
parameter must be manually adjusted, and exported clips will have the wrong playback speed
DVR-Scan 1.2¶
1.2 (March 10, 2021)¶
Changelog¶
- [bugfix] Fix quiet mode (
-q/--quiet
) not working correctly (#19, #35) - [bugfix] Fix downscale factor (
-df
/--downscale-factor
) having no effect (#46) - [api] Swap order of
fps
andtimecode
arguments inFrameTimecode
constructor to match that of PySceneDetect (#33) - [api] Refactor ScanContext class for better usage from Python (#33)
- [api] Use named logger rather than print statements (#35)
Known Issues¶
- When using the
-o
/--output
argument, a file is still written to disk even if no motion events are discovered in the input file (#50) - Variable framerate videos (VFR) are not fully supported, and will yield incorrect timestamps (#20)
DVR-Scan 1.1¶
1.1 (July 12, 2020)¶
Changelog¶
- [feature] Add new
-roi
argument to allow specifying a rectangular detection window, can select graphically or specify x/y/w/h via command line (thanks @klucsik) - [bugfix] Fixed broken OpenCV compatibility layer causing issues with OpenCV 3.0+
- [general] Released project on pip, pinned OpenCV version requirement
Known Issues¶
- Quiet mode (
-q/--quiet
) does not work correctly - Variable framerate videos (VFR) are not fully supported, and will yield incorrect timestamps (#20)
DVR-Scan 1.0¶
1.0.1 (January 12, 2017)¶
- [bugfix] unhandled exception affecting users running source distributions under Python 2.7 environments
1.0 (January 11, 2017)¶
- [feature] detects motion events with configurable sensitivity and noise removal thresholds
- [feature] output events to individual video files, or as a single-file compilation
- [feature] allows input seeking, frame skipping, and output suppression mode
- [feature] configurable detection windows and pre/post-event inclusion length