A CLI that utilizes VapourSynth to generator frame accurate comparison images
Go to file
2024-06-21 14:59:46 -04:00
frame_forge fix: bug since VapourSynth v65 where we not byte strings was trying to be decoded for FFMS2 2024-06-21 14:59:46 -04:00
hooks feat: initial commit 2024-01-24 12:11:06 -05:00
images feat: initial commit 2024-01-24 12:11:06 -05:00
.gitignore feat: initial commit 2024-01-24 12:11:06 -05:00
build.py chore: update build script 2024-01-24 12:36:09 -05:00
frame_forge.py feat: v1.3.0 2024-06-20 12:14:06 -04:00
LICENSE chore: update license 2024-01-24 12:31:58 -05:00
poetry.lock feat: add latest version of awsmfunc 2024-06-21 14:57:26 -04:00
pyproject.toml feat: add latest version of awsmfunc 2024-06-21 14:57:26 -04:00
README.md feat: update readme 2024-06-20 12:17:09 -04:00

Image-Generator

A CLI to generate comparison image sets with

Usage

usage: FrameForge [-h] [-v] [--source SOURCE] [--encode ENCODE] [--frames FRAMES] [--image-dir IMAGE_DIR]
                  [--indexer {lsmash,ffms2}] [--img-lib {imwri,fpng}] [--source-index-path SOURCE_INDEX_PATH]
                  [--encode-index-path ENCODE_INDEX_PATH] [--sub-size SUB_SIZE] [--sub-alignment SUB_ALIGNMENT]
                  [--left-crop LEFT_CROP] [--right-crop RIGHT_CROP] [--top-crop TOP_CROP] [--bottom-crop BOTTOM_CROP]
                  [--adv-resize-left ADV_RESIZE_LEFT] [--adv-resize-right ADV_RESIZE_RIGHT]
                  [--adv-resize-top ADV_RESIZE_TOP] [--adv-resize-bottom ADV_RESIZE_BOTTOM] [--tone-map]
                  [--re-sync RE_SYNC] [--comparison-count COMPARISON_COUNT] [--subtitle-color SUBTITLE_COLOR]
                  [--release-sub-title RELEASE_SUB_TITLE]

options:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  --source SOURCE       Path to source file
  --encode ENCODE       Path to encode file
  --frames FRAMES       Only use this if you want to specify the frames to generate, this disables sync frames
  --image-dir IMAGE_DIR
                        Path to base image folder
  --indexer {lsmash,ffms2}
                        Indexer choice
  --img-lib {imwri,fpng}
                        Image library to use
  --source-index-path SOURCE_INDEX_PATH
                        Path to look/create indexes for source
  --encode-index-path ENCODE_INDEX_PATH
                        Path to look/create indexes for encode
  --sub-size SUB_SIZE   Size of subtitles
  --sub-alignment SUB_ALIGNMENT
                        Alignment of subtitles (.ass)
  --left-crop LEFT_CROP
                        Left crop
  --right-crop RIGHT_CROP
                        Right crop
  --top-crop TOP_CROP   Top crop
  --bottom-crop BOTTOM_CROP
                        crop
  --adv-resize-left ADV_RESIZE_LEFT
                        Advanced resize left
  --adv-resize-right ADV_RESIZE_RIGHT
                        Advanced resize right
  --adv-resize-top ADV_RESIZE_TOP
                        Advanced resize top
  --adv-resize-bottom ADV_RESIZE_BOTTOM
                        Advanced resize bottom
  --tone-map            HDR tone-mapping
  --re-sync RE_SYNC     Sync offset for image generation in frames (i.e. --re-sync=-3)
  --comparison-count COMPARISON_COUNT
                        Amount of comparisons to generate
  --subtitle-color SUBTITLE_COLOR
                        Hex color code for subtitle color (i.e. --subtitle-color "#fff000")
  --release-sub-title RELEASE_SUB_TITLE
                        Release group subtitle name (this will show on the encode images)

Supports

Windows 8 and up (x64). Technically could support Linux/MacOS but binaries will only be compiled for Windows for now.

Requirements

You will need lsmash, ffms2, libfpng, libimwri, and SubText vapoursynth plugins. For windows I have compiled an executable with the needed runtime libraries.

Example Usage

FrameForge.exe --source "path/Ant-Man.2015.mkv" --encode "path/Ant-Man.2015.Encoded.mkv" --sub-size 12 --indexer lsmash --top-crop 22 --bottom-crop 22 --subtitle-color #00FF00

Indexing source
...
Source index completed

Indexing encode
...
Encode index completed

Checking if encode has been de-interlaced
No de-interlacing detected

Generating 20 'B' frames for comparison images
Finished generating 20 'B' frames

Creating folders for images
Folder creation completed

Generating screenshots, please wait
Writing file: 01a_source__%d.png, frame: 25270
Writing file: 02a_source__%d.png, frame: 30590
...

Generating a few sync frames
Writing file: 01b_encode__%d.png, frame: 35910
Writing file: 02b_encode__%d.png, frame: 25270
...

Screen generation completed
Output: path/Ant-Man.2015_images/

04a_source__41230.png 04b_encode__41230.png

11a_source__41230.png 11b_encode__41230.png

16a_source__41230.png 16b_encode__41230.png