Video Splitter is a lightweight desktop GUI built with Python (Tkinter + ttkbootstrap) that lets you split a video into equal-length parts in just a few clicks. Pick a file, set the desired length in minutes/seconds, and the app exports sequential MP4 parts to an output folder.
- Simple, modern UI using ttkbootstrap themes
- Select a video file and split by fixed duration (minutes + seconds)
- Background processing to keep the UI responsive
- Visual progress bar and progress counter
- Outputs H.264 MP4 files named sequentially (part_1.mp4, part_2.mp4, ...)
- Organizes results per video under output/<video_name>/
- Python 3.9 or newer
- OS: Windows, macOS, or Linux
- FFmpeg: moviepy uses imageio-ffmpeg to download a compatible FFmpeg binary automatically if one isnβt found. Installing FFmpeg system-wide can speed up processing and avoid extra downloads.
Use a virtual environment and install the required Python packages.
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install -r requirements.txtpython3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txtpython app.py- Click Browse and choose a video file (.mp4, .avi)
- Enter the split length as minutes and seconds
- Click Split to start processing
- Monitor progress; when complete, parts are saved to:
- output/<video_name>/part_1.mp4, part_2.mp4, ...
- Supported inputs: common formats supported by moviepy/FFmpeg (.mp4, .avi)
- Output is MP4 (H.264 codec)
- Very large files may take time; ensure adequate disk space
- If FFmpeg isnβt found, moviepy will attempt to download a compatible binary automatically via imageio-ffmpeg.
- If the window icon doesnβt show, ensure favicon.ico exists in the project root.
- Python, Tkinter, ttkbootstrap
- moviepy (video reading/writing, splitting)
- Pillow (PIL) for icon handling
- threading (run processing without freezing UI)
- Theme: the app uses the ttkbootstrap theme "cyborg" by default. You can change it in app.py:
tb.Window(themename="cyborg"). - Output folder: created automatically under output/<video_name>/ relative to the project root.
- Supported input formats are determined by moviepy/FFmpeg; add more filetypes in
filedialog.askopenfilenameif needed.
video-splitter/
ββ app.py # Main GUI application (Tkinter + ttkbootstrap + moviepy)
ββ favicon.ico # Window icon used by the application and banner image above
ββ README.md # Project documentation (you are here)
ββ requirements.txt # Python dependencies for this application
app.py: Implements the GUI, file selection, duration inputs, background splitting, and progress updates.favicon.ico: Icon for the application window; also displayed at the top of this README.README.md: Usage, installation, and contributor info..github/prompts/create-readme.prompt.md: Meta-prompt describing how this README is generated; not required to run the app.
Contributions are welcome. To propose a change:
- Fork the repository and create a feature branch
- Make your changes with clear commit messages
- Test locally on a sample video
- Open a Pull Request describing the change and rationale
For issues or feature requests, please open a GitHub Issue.
- moviepy: https://zulko.github.io/moviepy/
- ttkbootstrap: https://ttkbootstrap.readthedocs.io/
- Pillow: https://pillow.readthedocs.io/
- moviepy and imageio-ffmpeg for video processing
- ttkbootstrap for the modern Tkinter theme
- Pillow for image/icon handling
