Skip to content
Brandon Castellano edited this page Apr 12, 2024 · 25 revisions

Welcome to the DVR-Scan wiki, used for development specific book-keeping and idea management.


DVR-Scan 2.0

CUDA Support

Now that the OpenCV Python bindings support the GPU module, DVR-Scan should provide support for using them. For now, an explicit flag will be added (e.g. -g/--gpu). Also need to see if OpenCL/Vulkan works as well.

Integration w/ PySceneDetect

There is a lot of duplicated code between DVR-Scan and PySceneDetect, as well as more functionality that could be offered to DVR-Scan.

This would also allow for replacing the OpenCV VideoWriter with ffmpeg - there's no real reason to prefer the VideoWriter method for this use case, and use of ffmpeg directly provides more optimization possibilities. If a v1.2 release is planned, can consider temporarily reverting to using OpenCV VideoWriter and display a warning (but only AVI is allowed as output - what if the user specifies MP4?). New CLI flags:

  • -ffmpeg/--force-ffmpeg (optional, if specified, errors if ffmpeg is not available)
  • -a/--override-args to override params passed to ffmpeg (default should be copy mode)
  • -p/--precise to default to high quality re-encoding for accurate timing of split videos (copy mode is not frame perfect)

Folder Support

Need to add -c/--concatenate to explicitly concatenate multiple videos when -i is specified multiple times (this changes default behaviour, as specifying -i multiple times concatenates right now).

As for folder support, should -i support a folder as a path directly? If so, how should we determine which files to try as videos? If we take wildcards, what happens in bash? Is it just easier to add another argument (-d/--directory)

Output File Naming

Currently there are no provisions to specify the output filenames. Allow users to enter a template like PySceneDetect does. (Aside: Should a different wildcard character be chosen, instead of $, to avoid issues on bash? Why not just use {VIDEO_NAME}, {EVENT_NUM}, etc...?)

DVR-Scan 2.1

Parallelization

If -c is not specified, and there are multiple inputs, we can run sub-processes simultaneously.

GUI

andy-verstraeten has provided a proof of concept in the guidev branch (#37), which should be cleaned up and provided as an official GUI. There are some edge cases with frame scaling/resizing in certain windows, but it does a great job, and shows how this is viable.


Roadmap: Features Under Development & Consideration

TODO: This section is out of date.

Features Under Development for Upcoming v1.2 Release

Type Description Complete Issue
bug-fix flag to manually set framerate if not properly detected from video/camera N N/A
feature downscaling for faster detection and encoding N N/A

Tasks & Features for Subsequent v1.2 Release

Type Description Complete Issue
feature image masking with a transparent .PNG to determine which parts of the frame should be excluded from motion detection N N/A

Ideas Under Consideration for Future Releases

Type Description Complete Issue
enhancement support for live videos via video cameras / webcams N N/A
feature integration with mkvmerge or ffmpeg instead of using the OpenCV VideoWriter N N/A
other find/create test footage with various events, e.g. static scene (example), scene with vehicles in background (example 1, example 2) to test masking and motion threshold/magnitude N N/A
other integration with PySceneDetect N N/A