Releases: Breakthrough/PySceneDetect
PySceneDetect v0.6-dev2
PySceneDetect v0.5.6.1
Fixes crash when using detect-content or detect-adaptive with latest version of OpenCV (thanks @bilde2910). Does not affect the Windows distributions, for the installer/portable version continue to download v0.5.6.
PySceneDetect v0.5.6
Release Notes
- New detection algorithm:
detect-adaptivewhich works similar todetect-content, but with reduced false negatives during fast camera movement (thanks @scarwire and @wjs018) - Images generated by
save-imagescan now be resized via the command line - Statsfiles now work properly with
detect-threshold - Removed the
-p/--min-percentoption fromdetect-threshold - Add new option
-l/--luma-onlytodetect-content/detect-adaptiveto only consider brightness channel (useful for greyscale videos)
Changelog
- [feature] New adaptive content detector algorithm
detect-adaptive(#153, thanks @scarwire and @wjs018) - [feature] Images generated with the
save-imagescommand (scene_manager.save_images()function in the Python API) can now be scaled or resized (#160 and PR #203, thanks @wjs018)- Images can be resized by a constant scaling factory using
-s/--scale(e.g.--scale 0.5shrinks the height/width by half) - Images can be resized to a specified height (
-h/--height) and/or width (-w/--width), in pixels; if only one is specified, the aspect ratio of the original video is kept
- Images can be resized by a constant scaling factory using
- [api] Calling
seek()on aVideoManagerwill now respect the end time if set - [api] The
split_video_functions now return the exit code of invokingffmpegormkvmerge(#209, thanks @AdrienLF) - [api] Removed the
min_percentargument fromThresholdDetectoras was not providing any performance benefit for the majority of use cases (#178) - [bugfix] The
detect-thresholdcommand now works properly with a statsfile (#211, thanks @jeremymeyers) - [bugfix] Fixed crash due to unhandled
TypeErrorexception when using non-PyPI OpenCV packages from certain Linux distributions (#220) - [bugfix] A warning is now displayed for videos which may not be decoded correctly, esp. VP9 (#86, thanks @wjs018)
- [api] A named logger is now used for both API and CLI logging instead of the root logger (#205)
Known Issues
- Variable framerate videos (VFR) are not fully supported, and will yield incorrect timestamps (#168)
- The
-l/--add-last-sceneoption indetect-thresholdcannot be disabled - Image sequences or URL inputs are not supported by the
save-imagesorsplit-videocommands (in v0.6save-imagesworks with image sequences) - Due to the use of truncation for frame number calculation, FrameTimecode objects may be off-by-one when constructed using a float value (#268, fixed in v0.6)
PySceneDetect v0.5.5
Release Notes
- One of the last major updates before transitioning to the new v1.0.x API
- The
--min-scene-len/-moption is now global rather than per-detector - There is a new global option
--drop-short-scenesto go along with-m - Removed first row from statsfiles so it is a valid CSV file
- The progress bar now correctly resizes when the terminal is resized
- Image sequences and URLs are now supported for input via the CLI/API
- Images exported using the
save-imagescommand are now resized to match the display aspect ratio - A new flag
-s/--skip-cutshas been added to thelist-scenescommand to allow standardized processing - The functionality of
save-imagesis now accessible via the Python API through thesave_images()function inscenedetect.scene_manager - Under the
save-imagescommand, renamed--image-frame-marginto--frame-margin, added short option-m, and increased the default value from 0 to 1 due to instances of the last frame of a video being occasionally missed (set-m 0to restore original behaviour)
Changelog
Full changelog can be found here on Github.
Known Issues
- Image sequences or URL inputs are not supported by the
save-imagesorsplit-videocommands - Variable framerate videos (VFR) are not fully supported, and will yield incorrect timestamps (#168)
PySceneDetect v0.5.4
Release Notes
- Improved performance when using
timeandsave-imagescommands - Improved performance of
detect-thresholdwhen using a small minimum percent - Fix crash when using
detect-thresholdwith a statsfile - Fix crash when using
save-imagescommand under Python 2.7 - Support for Python 3.3 and 3.4 has been deprecated (see below)
- Version number on PyPI for this release is v0.5.4.1
Changelog
Full changelog can be found here on Github.
Known Issues
- Variable framerate videos are not supported properly currently (#168), a warning may be added in the next release to indicate when a VFR video is detected, until this can be properly resolved (#168)
- In certain cases, video files which will not load will fail silently, with PySceneDetect reporting that it processed 0 frames. Better error handling/messaging is planned for these cases as part of #179
PySceneDetect v0.5.3
Release Notes
- Resolved long-standing bug where
split-videocommand would duplicate certain frames at the beginning/end of the output (#93) - This was determined to be caused by copying (instead of re-encoding) the audio track, causing extra frames to be brought in when the audio samples did not line up on a frame boundary (thank you @joshcoales for your assistance)
- Default behavior is to now re-encode audio tracks using the
aaccodec when usingsplit-video(it can be overriden in both the command line and Python interface) - Improved timestamp accuracy when using
split-videocommand to further reduce instances of duplicated or off-by-one frame issues - Fixed application crash when using the
-l/--logfileargument
Changelog
Full changelog can be found here on Github.
Known Issues
- Seeking through long videos is inefficient, causing the
timeandsave-imagescommand to take a long time to run. This will be resolved in the next release (see #98) - The
save-imagescommand causes PySceneDetect to crash under Python 2.7 (see #174) - Using
detect-thresholdwith a statsfile causes PySceneDetect to crash (see #122) - Variable framerate videos are not supported properly currently (#168), a warning may be added in the next release to indicate when a VFR video is detected, until this can be properly resolved (#168)
- Videos with multiple audio tracks may not work correctly, see this comment on #179 for a workaround using
ffmpegormkvmerge
PySceneDetect v0.5.2
Minor release including only additions and bugfixes (thanks to everyone who contributed to this release!). Changelog:
- [enhancement]
--min-durationnow accepts a timecode in addition to frame number (#128, thanks @tonycpsu) - [feature] Add
--image-frame-marginoption tosave-imagescommand to ignore a number of frames at the start/end of a scene (#129, thanks @tonycpsu) - [bugfix]
--min-scene-lenoption was not respected by first scene (#105, thanks @charlesvestal) - [bugfix] Splitting videos with an analyzed duration only splits within analyzed area (#106, thanks @charlesvestal)
- [bugfix] Improper start timecode applied to the
split-videocommand when usingffmpeg(#93, thanks @typoman) - [bugfix] Added links and filename sanitation to html output (#139 and #140, thanks @wsj018)
- [bugfix] UnboundLocalError in
detect_sceneswhenframe_skipis larger than 0 (#126, thanks @twostarxx)
PySceneDetect v0.5.1.1
-
minor re-release of v0.5.1, includes updated setup.py which returns OpenCV to an optional dependency
-
to install from pip now with all dependencies:
pip install scenedetect[opencv,progress_bar] -
to install only PySceneDetect: (separate OpenCV installation required)
pip install scenedetect -
the release notes of v0.5.1 have been modified to include the prior command
-
no change to PySceneDetect program version
-
[feature] add
get_durationmethod to VideoManager (#109, thanks @arianaa30)
This change was made to support platforms where the opencv-python package is unavailable, and to allow using a non-pip version of OpenCV (e.g. a binary install or building from source). See #73 for why the original fix was implemented, and #111 for details on what prompted this re-release.
PySceneDetect v0.5.1
- [feature] Add new
export-htmlcommand to the CLI (thanks @wjs018) - [bugfix] VideoManager read function failed on multiple videos (thanks @ivan23kor)
- [bugfix] Fix crash when no scenes are detected (#79, thanks @raj6996)
- [bugfix] Fixed OpenCV not getting installed due to missing dependency (#73)
- [enhance] When no scenes are detected, the whole video is now returned instead of nothing (thanks @piercus)
- Removed Windows installer due to binary packages now being available, and to streamline the release process (see #102 for more information). When you type
pip install scenedetect[opencv,progress_bar], all dependencies will be installed.
PySceneDetect v0.5
You can install via pip:
pip install scenedetect
There is now a manual published at manual.scenedetect.com. See the main project page for details on installing dependencies.
The Windows build should be released within a week or so.
Changelog
- major release, includes stable Python API with examples and updated documentation
- numerous changes to command-line interface with addition of sub-commands (see the new manual for updated usage information)
- [feature] videos are now split using ffmpeg by default, resulting in frame-perfect cuts (can still use mkvmerge by specifying the -c/--copy argument to the split-video command)
- [enhance] image filename numbers are now consistent with those of split video scenes (PR #39, thanks @e271828-)
- [enhance] 5-10% improvement in processing performance due to reduced memory copy operations (PR #40, thanks [@elcombato] (#40))
- [enhance] updated exception handling to raise proper standard exceptions (PR #37, thanks @talkain)
- several fixes to the documentation, including improper dates and outdated CLI arguments (PR #26 and #, thanks [@elcombato] (#26), and @colelawrence)
- numerous other PRs and issues/bug reports that have been fixed - there are too many to list individually here, so I want to extend a big thank you to everyone who contributed to making this release better
- [enhance] add Sphinx-generated API documentation (available at: http://manual.scenedetect.com)
- [project] move from BSD 2-clause to 3-clause license