Skip to main content

A library for automatically generating and selecting video screenshots.

Project description

screenshotgenerator

This project aims to automate the selection of video screenshots. It employs ffmpeg to generate a pool of screenshots then calls on two autogluon machine learning models to score the screenshots in order to select the best of them. The first model attempts to determine whether a screenshot is focused while the second model attempts to determine whether the screenshot is a portrait (a close-up of one or more people). The focused model's score makes up 75% of the total score while the portrait model's score makes up 25% of the total score.

Dependencies

The following must be installed on your system:

CUDA

autogluon uses the CPU version of PyTorch, by default. If you have a CUDA-enabled GPU, installing the CUDA version of PyTorch may increase prediction speed:

pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116

Usage

Download and extract models.zip.

CLI

Usage: screenshotgenerator [OPTIONS]

Options:
  --end-time [%H:%M:%S]           The time at which to stop taking
                                  screenshots. Defaults to 95% of the video
                                  duration, to exclude credits.
  --ffmpeg-path TEXT              The path to ffmpeg. Defaults to 'ffmpeg', 
                                  which requires ffmpeg to be in your path.
  --models-directory TEXT         The path to the directory containing the
                                  autogluon models. If the directory doesn't
                                  exist, the pretrained models will be
                                  downloaded to this location. Defaults to a 
                                  subdirectory in the user data directory.
  --pool-directory TEXT           The directory in which to store the
                                  screenshot pool. Defaults to the temporary 
                                  directory.
  --pool-report-path TEXT         A JSON file detailing the screenshot pool,
                                  sorted by descending preference.
  --pool-size INTEGER             The size of the pool from which to select
                                  screenshots.  [default: 64]
  --portrait-preference [mixed|noportrait|portrait]
                                  Preference regarding portrait screenshots.
                                  [default: portrait]
  --screenshot-count INTEGER      The number of screenshots to select.
                                  [default: 4]
  --screenshot-directory TEXT     The directory into which to copy the
                                  selected screenshots.  [required]
  --silent                        Suppress ffmpeg and autogluon output.
  --start-time [%H:%M:%S]         The time at which to start taking
                                  screenshots.  [default: 00:00:00]
  --video-path TEXT               The path to the video for which to generate
                                  screenshots.  [required]
  --help                          Show this message and exit.

Example

screenshotgenerator --screenshot-directory "B:\Screenshots" --video-path "Z:\Encodes\A Great Movie (2023).mkv --portrait-preference mixed

Library

The library provides the following:

  • generate function
  • PortraitPreference enum
  • Screenshot class

Parameters

  • screenshot_directory: str
    The directory into which to copy the selected screenshots.
  • video_path: str
    The path to the video for which to generate screenshots.
  • end_time: datetime
    The time at which to stop taking screenshots. Defaults to 95% of the video duration, to exclude credits.
  • ffmpeg_path: str
    The path to ffmpeg. Defaults to 'ffmpeg', which requires ffmpeg to be in your path.
  • models_directory: str The path to the directory containing the autogluon models. Defaults to a subdirectory in the user data directory.
    If the directory doesn't exist, the pretrained models will be downloaded to this location.
  • pool_directory: str
    The directory in which to store the screenshot pool. Defaults to the temporary directory.
  • pool_size: int
    The size of the pool from which to select screenshots. Defaults to 64.
  • portrait_preference: PortraitPreference
    Preference regarding portrait screenshots. Defaults to PortraitPreference.PORTRAIT.
  • screenshot_count: int
    The number of screenshots to select. Defaults to 4.
  • silent: bool
    True to suppress ffmpeg and autogluon output. Defaults to false.
  • start_time: datetime
    The time at which to start taking screenshots. Defaults to 00:00:00.

Returns

list[Screenshot] The screenshot pool, sorted by descending preference.

Example

import screenshotgenerator

screenshots = screenshotgenerator.generate(
    screenshot_directory=r"B:\Screenshots",
    video_path=r"Z:\Encodes\A Great Movie (2023).mkv",
    portrait_preference = screenshotgenerator.PortraitPreference.MIXED)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

screenshotgenerator-0.3.0.tar.gz (8.9 kB view hashes)

Uploaded Source

Built Distribution

screenshotgenerator-0.3.0-py3-none-any.whl (9.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page