A CLI that utilizes VapourSynth to generator frame accurate comparison images
Go to file
jlw_4049 d27d3d0653 feat: v1.3.3
fix: an edge case bug that could potentially cause data loss when generating the final folder
fix: a bug where the encode would attempt to use the source index file, generating a new one in it's place incorrectly (this was present in ffms2)
2024-08-25 14:00:27 -04:00
frame_forge feat: v1.3.3 2024-08-25 14:00:27 -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.3 2024-08-25 14:00:27 -04:00
LICENSE chore: update license 2024-01-24 12:31:58 -05:00
poetry.lock refactor: update required python version 2024-08-12 12:12:02 -04:00
pyproject.toml feat: v1.3.3 2024-08-25 14:00:27 -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