Skip to content
WillMatthewsPublic

About

MLG-ify any video: quickscopes, hitmarkers, airhorns, Doritos, Mtn Dew, illuminati confirmed

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

13 Commits

Folders and files

Repository files navigation

major-league-gaming

Turn a video into a 2014 MLG montage.

MW2 quickscopes, slow-motion replays, hitmarkers, airhorns, a dubstep drop, far too many Doritos, and a “deal with it” outro.

Before and after

Same clip, before and after. The previews are silent; open the after video for the full thing with sound.

Before · 8 seconds After · 19 seconds
Original target practice clip MLG quickscopes, replays, and meme effects

Before MP4 · After MP4 with sound · Recreate the demo

Usage

You'll need Python 3.12+, uv, and FFmpeg (ffmpeg and ffprobe on your PATH). The images and soundbites are included in the repo.

git clone https://github.com/WillMatthews/mlg.git
cd mlg
uv run mlg clip.mp4

This writes clip_MLG.mp4. By default, the loudest point in the clip becomes the shot. Pick a moment yourself with -m (seconds):

uv run mlg clip.mp4 -m 4.2 --target 0.4,0.3

--target sets where the scope aims and the shades land. Coordinates run from 0,0 at the top left to 1,1 at the bottom right; the default is 0.5,0.5.

To try the included demo:

uv run mlg demo/target_practice.mp4 -m 3.2

Preview first

uv run mlg clip.mp4 --preview

This renders the full montage with sound at up to 640 pixels wide and 15fps, using a faster encoder. It writes clip_MLG_preview.mp4, so it won't replace your full render. Smaller sources and --width values stay smaller. Use the same options without --preview when you're happy with it.

How much MLG?

uv run mlg clip.mp4 --intensity low --preview
uv run mlg clip.mp4 --intensity chaos

normal keeps the original look. low reduces camera shake, flashes, hitmarkers, falling memes, and deep-frying. chaos turns them up. The sections, timing, and audio levels stay the same, so you can compare styles on the same clip.

Choose the sections

Everything is on by default. Skip sections with --no-weed, --no-deal-with-it, --no-illuminati, or --no-replays:

uv run mlg clip.mp4 --no-weed --no-deal-with-it

Skipped sections remove their audio and shorten the video. --no-weed also removes the joints and falling leaves; --no-illuminati removes the eye during the drop. You can explicitly enable them with --weed, --deal-with-it, --illuminati, and --replays.

Use --no-drop to skip the dubstep section and its overlays and voice lines. Choose the number of replays with --replay-count N (default: 2). Zero skips them; --no-replays takes precedence over the count.

uv run mlg clip.mp4 --replay-count 1 --no-drop --no-weed

Bring your own drop

Without a track, mlg generates a 140 BPM wobble drop. Use --drop to supply your own, --drop-start to choose where it kicks in, and --bpm to sync the effects:

uv run mlg clip.mp4 --drop bangarang.mp3 --drop-start 31.5 --bpm 110

--drop-len sets how many seconds to use (default: 8). You can also put a track at sounds/drop.mp3 to use it by default.

Run uv run mlg --help for output path, width, seed, and other options.

Swap the memes

Replace files in sounds/ or assets/, keeping their names. For example, sounds/airhorn.mp3 changes the horn and assets/doritos.png changes the falling snacks. Sounds can also be WAV, OGG, FLAC, or M4A. Missing sounds and sprites use generated fallbacks where available.

Snoop, the frog, and the quickscope use animation frames in assets/snoop/, assets/frog/, and assets/quickscope/.

To fetch the source assets again, run ./fetch_assets.sh (requires curl; yt-dlp is needed for the quickscope video). To rebuild images and animation frames from files already in assets/raw/, run uv run python -m mlg.prep.

Credits

Soundbites from myinstants.com. Images from pngimg.com, pngkey.com, pngitem.com, and tenor.com. The MW2 sniper reticle comes from the Call of Duty wiki; the quickscope green screen is YouTube video xVrayfJ_oI8.

Third-party meme material used for parody. The demo's target animation is generated by demo/make_source.py.

Development

uv run python -m unittest discover -s tests -v
uv build

CI checks Python 3.12 and 3.13, including real FFmpeg renders, failure cleanup, and an installed wheel. Built wheels include the images, sounds, and animation frames; raw downloads and demo videos are left out.

About

MLG-ify any video: quickscopes, hitmarkers, airhorns, Doritos, Mtn Dew, illuminati confirmed

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages