Skip to content

IschNehmDirGleichDemTabletWeg/SimpleMp4Cutter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

✂ SimpleMp4Cutter

A simple, clean MP4 cutter and joiner with GUI — powered by ffmpeg and built with Python/tkinter.

Python Platform License ffmpeg Version


grafik grafik

📸 Features

  • ✂ Cut Mode — Cut any video by setting a start and end time (precise to milliseconds)
  • ⛓ Join Mode — Merge two video files, with optional re-encoding for a seamless join
  • 💬 SRT Import Mode — Mux external subtitles into MP4/MKV without re-encoding
  • 📐 Ratio Fix Mode — Fix wrong aspect ratio metadata in seconds — no re-encode
  • 🎬 Video Preview — Live frame preview with timeline scrubber directly in the app
  • ⌨ Keyframe Navigation — Jump between keyframes with ← → arrow keys
  • 🖱 Click-to-Jump — Click anywhere on the timeline to jump to that position
  • [ IN / OUT ] — Set cut points directly from the timeline, with silent validation (IN always < OUT)
  • 🚫 Reset Buttons — Reset start/end times back to defaults with one click
  • GPU Encoder Support — Choose between CPU (libx264), NVIDIA (h264_nvenc), AMD (h264_amf) or Intel QuickSync (h264_qsv)
  • Inline Progress Bar — Percentage and elapsed time shown in the status bar — no popup window
  • 🚫 Cancel Join — Button turns yellow during join and allows cancelling mid-process
  • ⏮⏭ Prev/Next Navigation — Browse through all videos in the same folder with Prev/Next buttons
  • 📂 Dynamic Path Labels — Long paths are automatically shortened, always showing the filename
  • CRF Quality Slider — Control encode quality from 0 (lossless) to 51 (low)
  • ✅ ffmpeg Status — Header shows ffmpeg status at a glance — click to set path manually
  • Auto-detect ffmpeg — Prompts automatically on first start if ffmpeg is not found
  • Window position memory — App reopens exactly where you left it
  • Smart file naming — Output files are automatically named _part01, _part02, _joined01 etc. — no overwrites
  • Config persistence — All settings saved automatically next to the exe

🎬 Usage

✂ Cut Mode

Field Description
Source File The video you want to cut
Output Folder Where the cut file is saved
Timeline Scrub through the video — click anywhere or drag
← → Jump between keyframes with arrow keys
[ Set IN Sets start time to current timeline position (only if < OUT)
Set OUT ] Sets end time to current timeline position (only if > IN)
🚫 Resets start to 00:00:00.000 / clears end time

Time format: HH:MM:SS.mmm or plain seconds like 83.5

Output is saved as originalname_part01.mp4, _part02.mp4, etc.


⛓ Join Mode

  1. Select File 1 and File 2
  2. Optionally enable Re-Encode for a seamless join at the cut point
  3. Choose your encoder and adjust the CRF slider
  4. Hit JOIN FILES — output saves next to File 1 as _joined01.mp4

Encoder Options

Encoder Requires Speed Notes
libx264 CPU only Slow Best compatibility, most accurate CRF
h264_nvenc NVIDIA GPU Very fast Requires CUDA driver
h264_amf AMD GPU Very fast Requires AMD drivers
h264_qsv Intel GPU Fast Requires Intel drivers

Note on GPU file size: GPU encoders need a higher CRF value (28–35) to produce similar file sizes as CPU at CRF 23. The quality difference is minimal — GPU encoders are simply more efficient per bit.


💬 SRT Import Mode

Mux an external subtitle file into a video container — no re-encoding, stream copy only.

  1. Select your MP4 source file
  2. Select the matching SRT subtitle file
  3. Choose a destination folder
  4. Configure track names and language codes for audio and subtitle streams
  5. Choose output format: MKV (recommended) or MP4
  6. Hit SRT MUXEN
Setting Description
Audio Track Name Label shown in media players for the audio stream (e.g. DEU, English)
Audio Language ISO language code embedded in the container metadata
Subtitle Track Name Label for the subtitle track
Subtitle Language ISO language code for the subtitle stream
Output Format MKV supports SRT natively; MP4 converts to mov_text

Output is saved as originalname_muxed.mkv (or .mp4) in the selected folder.

All track settings are saved automatically and restored on next launch.


📐 Ratio Fix Mode

Fix a wrong aspect ratio flag in the video container — no re-encoding, only the header metadata is rewritten. The video data itself is untouched.

  1. Load a source file via the file panel
  2. Select the target aspect ratio from the dropdown
  3. The preview updates live — showing exactly how the video will look with the new ratio (letterbox / pillarbox simulation)
  4. Hit FIX ASPECT RATIO — the button only activates once a ratio is selected and a file is loaded

Available Presets

Preset Ratio Use case
Standard HD/4K 16:9 Most modern video
SD / old formats 4:3 Legacy TV, older cameras
Ultrawide 21:9 Widescreen monitors
Cinemascope 2.35:1 (235:100) Cinema anamorphic
Cinemascope 2.39:1 (239:100) Cinema anamorphic (DCI)
Flat 1.85:1 (185:100) Cinema flat
Square 1:1 Instagram, social media
Portrait 9:16 Mobile, TikTok, Reels
Custom any X:Y Free input, e.g. 178:100

Output is saved as originalname_arfix01.mp4, _arfix02.mp4, etc.


⌨ Keyboard Shortcuts

Key Action
H Show shortcuts
F1 Switch to Cut mode
F2 Switch to Join mode
F3 Switch to SRT Import mode
F4 Switch to Ratio Fix mode
F5 Cut & Save
F6 Join Files
F7 Fix Aspect Ratio
F8 Mux SRT
S Browse source file (Cut mode)
O Browse output folder (Cut mode)
← → Jump 1 keyframe
Ctrl + ← → Jump 10 keyframes
Home Set IN point
End Set OUT point
PgUp / PgDn Previous / Next file in folder
1 / 2 Open File 1 / File 2 (Join mode)
R Toggle Re-Encode (Join mode)
E Focus encoder dropdown (Join mode)
Q Focus CRF slider (Join mode)

⚙️ ffmpeg

The ffmpeg confirmed label in the top-right of the header shows whether ffmpeg is available. Click it to manually select your ffmpeg.exe.

Auto-detect search order:

  1. Manually set path
  2. System PATH
  3. C:\ffmpeg\bin\ffmpeg.exe
  4. C:\Program Files\ffmpeg\bin\ffmpeg.exe
  5. C:\Program Files (x86)\ffmpeg\bin\ffmpeg.exe

🗺 Roadmap

Version Feature
✅v1.0 Basic cut & join GUI
✅v1.1 GPU encoder support, live progress window, English UI
✅v1.2 Video preview, timeline scrubber, IN/OUT markers, keyframe navigation
✅v1.3 Click-to-jump on timeline, ffmpeg auto-prompt on first start
✅v1.4 Window position memory, reset buttons for start/end time
✅v1.5 New warm light blue/orange theme — easier on the eyes
✅v1.6 Inline progress bar, cancel join button, log file, layout & UX polish
✅v1.7 Fix terminal window flashing on Windows, disable logging
✅v1.8 Prev/Next file navigation, dynamic path labels, smaller buttons, new scissors icon
✅v1.9 Compact layout, START/END inline with time fields, clean marker labels
✅v2.0 Final UI modification
✅v2.1 Added SRT Import mode: mux external subtitles into MP4/MKV without re-encoding
✅v2.2 Live aspect ratio preview in Ratio Fix mode (letterbox / pillarbox simulation), color-coded mode button bar
✅v2.3 Shortcuts help (H key), olive color scheme, dynamic window height, fixed window width across all modes
🔜v3.0 Fine-tune cut mode — frame-accurate cut point selection
🔜v4.0 Linux & Mac compatibility

📁 Project Structure

SimpleMp4Cutter/
├── mp4_cutter.py       # Main application
├── icon.ico            # App icon
├── README.md           # This file
├── .gitattributes      # GitHub language detection fix
├── .gitignore          # Git ignore rules
└── LICENSE             # MIT License

mp4cutter.log and mp4cutter_config.json are created automatically next to the exe and are excluded from git.


📝 License

MIT License — free to use, modify and share.


Built with ❤️ and ffmpeg

About

A Simple Mp4 file Cutter to cut mp4 file in severall pieces and join it later together

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages