Releases: Breakthrough/PySceneDetect
PySceneDetect v0.5.6
Release Notes
- New detection algorithm:
detect-adaptive
which works similar todetect-content
, but with reduced false negatives during fast camera movement (thanks @scarwire and @wjs018) - Images generated by
save-images
can now be resized via the command line - Statsfiles now work properly with
detect-threshold
- Removed the
-p
/--min-percent
option fromdetect-threshold
- Add new option
-l
/--luma-only
todetect-content
/detect-adaptive
to 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-images
command (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.5
shrinks 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 aVideoManager
will now respect the end time if set - [api] The
split_video_
functions now return the exit code of invokingffmpeg
ormkvmerge
(#209, thanks @AdrienLF) - [api] Removed the
min_percent
argument fromThresholdDetector
as was not providing any performance benefit for the majority of use cases (#178) - [bugfix] The
detect-threshold
command now works properly with a statsfile (#211, thanks @jeremymeyers) - [bugfix] Fixed crash due to unhandled
TypeError
exception 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-scene
option indetect-threshold
cannot be disabled - Image sequences or URL inputs are not supported by the
save-images
orsplit-video
commands (in v0.6save-images
works 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
/-m
option is now global rather than per-detector - There is a new global option
--drop-short-scenes
to 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-images
command are now resized to match the display aspect ratio - A new flag
-s
/--skip-cuts
has been added to thelist-scenes
command to allow standardized processing - The functionality of
save-images
is now accessible via the Python API through thesave_images()
function inscenedetect.scene_manager
- Under the
save-images
command, renamed--image-frame-margin
to--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 0
to 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-images
orsplit-video
commands - Variable framerate videos (VFR) are not fully supported, and will yield incorrect timestamps (#168)
PySceneDetect v0.5.4
Release Notes
- Improved performance when using
time
andsave-images
commands - Improved performance of
detect-threshold
when using a small minimum percent - Fix crash when using
detect-threshold
with a statsfile - Fix crash when using
save-images
command 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-video
command 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
aac
codec when usingsplit-video
(it can be overriden in both the command line and Python interface) - Improved timestamp accuracy when using
split-video
command to further reduce instances of duplicated or off-by-one frame issues - Fixed application crash when using the
-l
/--logfile
argument
Changelog
Full changelog can be found here on Github.
Known Issues
- Seeking through long videos is inefficient, causing the
time
andsave-images
command to take a long time to run. This will be resolved in the next release (see #98) - The
save-images
command causes PySceneDetect to crash under Python 2.7 (see #174) - Using
detect-threshold
with 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
ffmpeg
ormkvmerge
PySceneDetect v0.5.2
Minor release including only additions and bugfixes (thanks to everyone who contributed to this release!). Changelog:
- [enhancement]
--min-duration
now accepts a timecode in addition to frame number (#128, thanks @tonycpsu) - [feature] Add
--image-frame-margin
option tosave-images
command to ignore a number of frames at the start/end of a scene (#129, thanks @tonycpsu) - [bugfix]
--min-scene-len
option 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-video
command when usingffmpeg
(#93, thanks @typoman) - [bugfix] Added links and filename sanitation to html output (#139 and #140, thanks @wsj018)
- [bugfix] UnboundLocalError in
detect_scenes
whenframe_skip
is 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_duration
method 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-html
command 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
PySceneDetect v0.5-beta-1
Updated beta release, only bugfixes to API, several modifications/changes to CLI commands. Summary of major API changes:
- Modify definition of end timecode returned by
scenedetect.SceneManager.get_scene_list()
method fromN
, whereN
is the last frame shown in the scene, toN+1
. This now means that the end timecode/frame equals the start timecode/frame of the next adjacent scene. Also note that this is also the definition expected from the external tools used to export video when specifying thesplit-video
command, improving compatibility with third-party tools. - If the
frame_skip
option is specified to be greater than 0 when using ascenedetect.SceneManager
, it is now explicitly disallowed to use ascenedetect.StatsManager
with theSceneManager
. If quicker processing speed is required, users should set thedownscale_factor
viaset_downscale_factor(downscale_factor=None)
. If nodownscale_factor
is passed (i.e.downscale_factor
isNone
), the downscale factor will be computed automatically based on the resolution of the source material, which provides a balance of performance and accuracy for most videos. - Removed unnecessary
new_time
argument fromFrameTimecode
object, and modify second argumentfps
so it can also be aFrameTimecode
object from which the framerate is copied, allowing creation of new timecodes from existing ones to follow a much more intuitive syntax.
Summary of major CLI changes from v0.5-beta:
- Fix erroneous output given by default
split-video
mode. The new default mode forsplit-video
is what-p/--precise
used to be, but somewhat faster, with an additional-h/--high-quality
flag to increase output video quality at expense of time, thus the default mode forsplit-video
is slower than it used to be, but significantly more accurate in terms of where output videos are split - The
split-video
flag-m/--mkvmerge
has been changed to-c/--copy
to better indicate what is happening, and requires mkvmerge, which produces output files significantly faster, but at the expense of frame-perfect accuracy when splitting. - Fix erroneous output given by
split-video -c/--copy
. - Changed
split-video
option-f/--ffmpeg-args
to-a/--override-args
to prevent conflicts with new options - Add
split-video
option-o/--output DIR
to specify output directory as well as-f/--filename NAME
to specify output filename, which allows the use of the macros$VIDEO_NAME
and$SCENE_NUMBER
inNAME
Several updates to other commands as well; use the help
command to list all available commands, and the help [command]
command to view the options/flags for a particular command (or alternatively help all
to show the entire PySceneDetect help/reference manual). Also fixed setup.py (thanks @ishandutta2007).
PySceneDetect v0.5-beta
Beta release of PySceneDetect v0.5 with significantly refactored API and CLI. Users are encouraged to upgrade to the v0.5-beta as soon as possible. The release of v0.5 will break existing scripts/programs; both the command-line interface and Python API have changed significantly to support future development.
Try scenedetect help
or scenedetect help all
to get started. See the updated README.md for updated quickstart information.
When the final version of v0.5 is released, beta users can upgrade seamlessly. The final release distribution of PySceneDetect v0.5 will be made available some time this month, including source/binary distributions.
This is a source-only distribution, and can only be run locally via the scenedetect.py
script. To install the beta, download v0.5-beta-1 or newer (via setup.py install - the version will show up as v0.5-dev
). Requires ffmpeg
or mkvmerge
to enable support for the split-video
command.
Includes unit tests using pytest (to run, type pytest -v
).