fontfallback | ||
fonts | ||
data.csv | ||
destretch.bat | ||
fonts.json | ||
gsm-ui.py | ||
gsm.ico | ||
gsm.py | ||
install-requirements.bat | ||
LICENSE | ||
README.md | ||
requirements.txt |
GameSetMatch
GSM is a tool that automatically compiles video tennis matches into one video with a simple style
video tutorial for GSM-UI by dani_phantump:
to use the program, simply click gsm-ui.py
,
if that doesnt work, make sure you run install-requirements.bat
if it still doesnt work, you lack certain required components.
- make sure you have ffmpeg installed (newer versions are more likely to work)
- make sure you have python installed (tested with python 3.13)
if you wish to use the Command-line Interface, type py gsm.py -h
in cmd to show help.
a simple usage would be py gsm.py input.csv output.mp4
once you have done that, set up your CSV, using notepad, or a spreadsheet program. i have provided an example CSV, based on a real match, but with example directories.
if you do not wish to include a title, make sure that the second line contains just 1 comma. if you need to add a title with commas or quotations, i would again Highly reccommend you use a spreadsheet editor
in Google Sheets this can be done via file > import and file > download.
anyway - with that all sorted out, you can now use the tool! you can now compile to your heart's content!
these are the defaults i use:
py gsm.py input.csv output.mp4 -f h264_amf -nr
- this allows for GPU accelerated encoding, which is a fair bit quicker than doing it via CPU
!!! WARNING! with this command however: -nr
means that it skips the resizing process. it will render quicker and the filesize will be smaller, but some video players, and some video editors will not play nice.
youtube handles the uploads just fine, but your tools may not!
if you have an NVIDIA gpu, replace amf
with nvenc
if you have intel integrated graphics, replace amf
with qsv
if you have linux, you may have to try something else to get GPU acceleration
destretch.bat
is a simple little file that retroactively adds padding to any output, if -nl
is applied
enjoy! if you have any questions, just ask. -inf
unfortunately this program is not perfect. things will go wrong. if you run into an error, try adding -v 40
to the command, and send the logs to me.
this is a list of known issues, and how to fix them:
GSM UI:
- cannot scroll to last round sometimes
caused by multiline textboxes - this will be fixed in the next version. a temporary workaround is to remove any multiline text, edit whatever it is you need to at the end, and then put the multiline text back. not ideal i know, but i don't have the Mental Energy to work on this project right now
GSM Core:
- "Padded dimensions cannot be smaller than input dimensions."
- "Negative values are not acceptable."
this means that something went wrong when adding letterboxing - i Think it's an ffmpeg bug.. not sure
to fix, either reencode your video, or add -nl
onto the command.
- height not divisible by 2
- width not divisible by 2
alot of video codecs do not support odd dimensions. not sure why
to fix, add -fe
onto the command
- not enough values to unpack
- too many values to unpack
this means that something went wrong whilst parsing your CSV file - usually this is because there's not enough or too many commas, or there's a rogue new-line in the titlecard section
- video is green
ffmpeg bug caused by cropping and using the NVENC Hardware encoder. use x264 instead - it's slower, but works
- audio is broken on some videos, and is generally Weird between certain apps.
you have used videos with a mixture of mono and stereo audio. this bug will be fixed in the next revision of GSM
planned features for future updates!
- more graceful error handling (i.e, if a video has odd dimensions, the tool will automatically use -fe)
- easier font customisation (maybe through the use of a settings file to edit defaults)
- easier text customisation (not sure how this would be done, probably through again, a settings file)
- yt-dlp integration (quite a major undertaking there - this might not happen)