Create Motion Photo v2/v3 from HEIC or JPG files paired with videos. Output files are compatible with Google Photos and Samsung Gallery as motion/live photos.
This is a Rust rewrite of PetrVys/MotionPhoto2, providing both a CLI tool (livemux) and a desktop GUI app built with Tauri.
Key improvements over the original Python version:
- Native performance with Rust
- Cross-platform desktop GUI (Tauri v2)
- Automatic MOV→MP4 remux for iPhone Live Photos (via FFmpeg)
- Apple Live Photo metadata cleanup for better Google Photos compatibility
For iPhone Live Photos, the presentation timestamp is migrated so the photo starts from the same keyframe.
- ExifTool — required
- FFmpeg — optional, needed to remux iPhone MOV videos to MP4 for Google Photos compatibility
Download the release for your platform from the Releases page.
# CLI only
cargo build --release -p livemux-cli
# GUI app (requires Node.js + pnpm)
cd ui && pnpm install && cd ..
cargo tauri buildRun the app — it provides a graphical interface with two modes:
- Single Mux: Select an image and video pair to create a motion photo
- Batch Directory: Process an entire directory of image-video pairs
livemux mux --image IMG_1234.HEIC --video IMG_1234.MOVlivemux dir --directory /your/directoryWith EXIF metadata matching (useful for Google Takeout or iCloud exports where filenames may not match):
livemux dir --directory /your/directory --exif-match| Flag | Description |
|---|---|
--overwrite |
Replace the original image file |
--delete-video |
Remove source video after muxing |
--keep-temp |
Keep intermediate XMP sidecar files |
--no-xmp |
Skip XMP metadata embedding (faster, less compatible) |
--recursive |
Process subdirectories recursively |
--exif-match |
Match image-video pairs by EXIF metadata |
--incremental |
Skip files that already contain motion photo data |
--copy-unmuxed |
Copy unmatched images to output directory |
-v, --verbose |
Enable debug logging |
HDR in Google Photos works only for HEIC photos with HDR stored in ISO/CD 21496-1 format. Effectively, HEIC photos must be shot on iPhone 15+ with iOS 18+ to be recognized as HDR by Google Photos.
This project is a Rust rewrite based on the original MotionPhoto2 by Petr Vyskocil, licensed under MIT.
Thanks to the original contributors: @Tkd-Alex, @NightMean, @sahilph, @tribut, @4Urban, @IamRysing.