Native Swift Β· 100% offline Β· Fully sandboxed Β· Open source (MIT)
β¬οΈ Download for macOS Β· π Product page Β· π Report a bug Β· β Star the repo
demo.mp4
Drop a video β pick a 3-second moment β click convert β it's already in your Photos app as a real Live Photo. That's it.
You found a perfect video clip β a sunset, a pet doing something hilarious, a beautiful drone shot β and you wish it could be your iPhone wallpaper or a Live Photo to share. Apple lets you set Live Photos as wallpapers and share them with the iconic press-to-play effect, but converting a regular video into a real Live Photo is surprisingly painful:
- π« Online converters upload your private videos to unknown servers.
- π« Most "Live Photo maker" apps cost money, are buggy, or strip your audio.
- π« Manual workflows require Shortcuts hacks, command-line tools, and a lot of patience.
Video2Live fixes all of that. It's a tiny, native macOS app that uses Apple's own frameworks (AVFoundation, Photos) to produce real Live Photos with the proper QuickTime metadata β the same kind iPhones produce β and drops them straight into your Photos library. No upload, no account, no subscription, no telemetry.
- πͺ One-click conversion β drag, drop, done.
- π Interactive timeline scrubber β pick the perfect 3-second segment with thumbnail preview.
- π Audio preserved β unlike most converters, your original audio stays in the Live Photo.
- π₯ Direct Photos library import β no Finder shuffle, no AirDrop dance.
- π Fully sandboxed β runs inside the macOS App Sandbox; only sees the video you pick.
- π‘ Photos Add-Only permission β Video2Live can save photos but cannot read your library.
- π‘ 100% offline β zero network requests, zero analytics, zero tracking.
- π Native Swift + SwiftUI β fast, lightweight, no Electron, no bundled Chromium.
- π Free & open source β MIT licensed; audit, fork, and build it yourself.
- π Wide format support β MOV, MP4, M4V, AVI, MKV, and more.
- Go to the latest release.
- Download
Video2Live.dmg. - Open the DMG and drag Video2Live.app into your Applications folder.
- Launch it. On first run, macOS may ask you to confirm β go to System Settings β Privacy & Security if needed.
Requirements: macOS 14.0 (Sonoma) or later. Apple Silicon and Intel Macs both supported.
git clone https://github.com/GavinHarbus/Video2Live.git
cd Video2Live
open Video2Live.xcodeprojIn Xcode, select your development team under Signing & Capabilities (required for Photos library access), then press Cmd + R.
- Load a video β drag and drop a video onto the app window, or click Choose File. Supports MOV, MP4, M4V, AVI, MKV, and more.
- Pick your moment (videos > 5s only) β drag the timeline scrubber to choose the 3-second segment you want as your Live Photo.
- Convert β click Convert to Live Photo. Video2Live will:
- Extract a key frame from the middle of your selected range
- Generate a HEIC still image with the proper Apple maker metadata
- Export a MOV clip with the
quicktime.content.identifierandstill-image-timetags - Import the paired files into your Photos library as a Live Photo
- Enjoy β open Photos, find your new Live Photo, long-press it (or hover with Force Touch), and watch it animate. Set it as your wallpaper, share it on iMessage, or upload to Instagram.
- π± Wallpapers β turn cinematic clips into stunning iOS / iPadOS Live Wallpapers.
- πΈ Social sharing β Live Photos look way cooler than static images on iMessage and Instagram.
- π Memory archives β convert old
.mp4family footage into Live Photos for the Photos timeline. - πΉ Sports highlights β slow, looping moments make great Live Photos.
- πΆ Pet content β your dog's perfect 3 seconds, immortalized.
- π¨ Creators β build wallpaper packs to sell or share.
| Step | What happens |
|---|---|
| Analyze | Reads video duration, resolution, and track info via AVURLAsset |
| Extract Frame | Uses AVAssetImageGenerator to capture a precise frame at the midpoint of your selection |
| Write HEIC | Creates a HEIC image with kCGImagePropertyMakerAppleDictionary containing the shared content identifier UUID |
| Write MOV | Exports the clip with com.apple.quicktime.content.identifier and com.apple.quicktime.still-image-time metadata so Photos recognizes it as a Live Photo pair |
| Import | Uses PHAssetCreationRequest to add the HEIC + MOV pair to your Photos library |
A Live Photo is just a paired HEIC + MOV with matching metadata. Video2Live handles the entire pipeline correctly β frame extraction, metadata embedding, and Photos import β in one click.
Video2Live/
βββ Video2LiveApp.swift # App entry point
βββ Models/
β βββ ConversionState.swift # State machine for the conversion flow
β βββ VideoProject.swift # Observable model holding video state
βββ Views/
β βββ ContentView.swift # Root view with state-based switching
β βββ DropZoneView.swift # Drag-and-drop + file picker
β βββ VideoPreviewView.swift # AVPlayerView wrapper
β βββ TimelineScrubberView.swift # Thumbnail strip with range selector
β βββ ConvertButton.swift # Convert button + progress indicator
βββ Services/
β βββ VideoAnalyzer.swift # Video metadata analysis
β βββ HEICWriter.swift # Key frame extraction + HEIC writing
β βββ MOVWriter.swift # Video trimming + QuickTime metadata
β βββ LivePhotoGenerator.swift # Conversion pipeline orchestrator
β βββ PhotosImporter.swift # Photos library import
βββ Utilities/
βββ MetadataConstants.swift # Metadata key constants
βββ Errors.swift # Error types
Video2Live requests the absolute minimum:
- Photos Library (Add Only) β to save the generated Live Photo. Cannot read your existing library.
- User-Selected File Access (Read Only) β to read the single video file you pick.
The app runs inside the macOS App Sandbox and never makes a network request. There is no analytics SDK, no telemetry, no crash reporter, nothing. Your videos never leave your Mac.
Read the full privacy policy on the product page.
./scripts/build-dmg.shThis archives, exports, and creates build/Video2Live.dmg with a drag-to-Applications layout β ready to share.
- "Photos library access was denied" β System Settings β Privacy & Security β Photos β enable Video2Live.
- Conversion succeeded but the Live Photo doesn't animate β Make sure the source has at least one video track. Pure-audio files or some screen recordings may not work.
- Metadata seems missing β In rare cases, passthrough export strips custom tags. The app automatically falls back to
AVAssetWriterwhen this is detected. - App is "damaged" / unsigned warning β Right-click
Video2Live.appβ Open β confirm. Or runxattr -cr /Applications/Video2Live.app.
Still stuck? Open an issue β happy to help.
If Video2Live saved you time, please:
- β Star this repo β it really helps others discover it.
- π¦ Share it on X / ε°ηΊ’δΉ¦ / Threads β tag with
#Video2Live. - π File issues and feature requests.
- π§ Pull requests welcome β see Project Structure to get oriented.
Want more native, privacy-first tools for creators? Check out the rest of Gavin Schnee Studio.
MIT Β© Gavin Schnee Studio