param( # powershell is factually gay idkl why its such a shit [Parameter(Mandatory=$True, Position=0)] # deband the param, its in position 0 so ya canb just ffmpreg_gif_loopy filename.mp4 OR ffmpreg_gif_loopy -Filename filename.mp4 [string]$Filename # var for filename string ) # apng is far hjigher quality and also preserves transparancy :activated: $noextpath = [System.IO.Path]::GetFileNameWithoutExtension($Filename) # get filename without extension $gifpath = "$noextpath`_MAXLOOP.gif" # add da .gif extension and MAXLOOP tag # ffmpeg ## -i input file (mp4) ## settings for -filter_complex purely vibe coded for max quality ### split [a][b]: Splitting clones the video stream into two identical, simultaneous feeds. This lets you process the color palette and render the GIF all in one ### palettegen=stats_mode=single: This generates the highest quality 256-color palette based strictly on the exact colors present in your video. Changing the mode to single tells FFmpeg to optimize colors for moving objects across frames. ### paletteuse=dither=bayer:bayer_scale=5: This dictates how colors are blended. Using a strict bayer dither with a scale of 5 keeps gradients incredibly clean and crisp, eliminating the ugly "cross-hatch" or "grainy" patterns typical of basic GIFs ## -loop 0 maek da gif loop ## outputfile (gif) ffmpeg -i "$Filename" -filter_complex "[0:v] split [a][b];[a] palettegen=stats_mode=single [p];[b][p] paletteuse=dither=bayer:bayer_scale=5" -loop 0 "$gifpath"