
DJI/GoPro Merger — Technical Overview
This macOS desktop app automates organizing and merging your DJI drone and GoPro .mp4 clips into clean, continuous videos — without re-encoding.

Merge dozens of small clips recorded by DJI drones or GoPro cameras — files like DJI_0123.MP4, MAX_0123.MP4, or GX0123.MP4 — into larger files for smooth editing or archiving.


[] You choose a folder or drive.
[] App scans all subfolders for .mp4 files.
[] Only files with names starting DJI_, MAX_, or GX are matched.
[] Size checks:
DJI_: under 4GB
GX and MAX_: under 12GB- App saves: full path, prefix, size, creation date, parent folder.

[] Files are sorted by folder and creation time.
[] A group must:
Have the same prefix.
Be in the same folder.
Have clips within a configurable time gap (default: 15 min).

[] Groups are shown as a tree structure.
[] Parent: shows prefix, first-last index, total size, date.
[] Children: full paths for each file.
[] Double-click a file to open its folder.- Select/deselect groups or individual files.

- When you start merging:
App makes a MERGE folder.
Inside it, a PREMERGE folder.
Each group gets its own subfolder named like the final output.
Selected source files are moved there.
A file list for FFmpeg is built.

[] Runs:
Code:ffmpeg -f concat -safe 0 -i filelist.txt -c copy outputfile.mp4
[] Output is named:
PREFIX_first-last_DATE.mp4
[] Example: DJI_002-005_20240630.mp4
[] Log file saved with the same name: DJI_002-005_20240630.log
[] Sets the output file’s timestamp to match the first clip.

Code:
ROOT/
├─ MERGE/
│ ├─ PREMERGE/
│ │ ├─ DJI_002-005_20240630/
│ │ │ ├─ DJI_002.MP4
│ │ │ ├─ DJI_003.MP4
│ │ │ ├─ DJI_004.MP4
│ │ │ ├─ DJI_005.MP4
│ ├─ DJI_002-005_20240630.mp4
│ ├─ DJI_002-005_20240630.log

[] Python 3 + PyQt5 for the desktop GUI.
[] os, pathlib, shutil: file operations.
[] subprocess: run FFmpeg.
[] os.utime: adjust timestamps.
Perfect for: drone pilots, action cam owners, vloggers — anyone needing a clean, automated way to batch-merge clips losslessly.