Skip to content

About

iOS app that turns your Live Photos and videos into real long-exposure shots

Topics

Resources

Stars

10 stars

Watchers

0 watching

Forks

Latest commit

 

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Long Exposures app icon

Long Exposures

Turn your Live Photos and videos into real long-exposure photographs.

iOS 17+ iPhone only On-device Swift


What it does

Long Exposures is an iOS app that turns your Live Photos and videos into real long-exposure shots. You can pick a frame range, choose a blend mode, and get motion blur or light trails without a tripod.


How it works

Image pipeline diagram

Step What happens
Import Your Live Photo's video (or any video clip) is decoded frame by frame (up to 167 frames).
Select A scrollable thumbnail strip lets you drag two handles to pick exactly which frames you want in your long-exposure.
Align Vision estimates a per-frame translation and sharpens the static background to remove blur.
Match exposure Per-channel brightness gains correct the camera's auto-metering flicker between frames.
Smooth motion Optical flow synthesizes in-between samples on the GPU, to create continuous streaks, even with low fps videos.
Blend A Metal GPU pipeline accumulates your frames in linear light and resolves them to sRGB. You can then lighten or darken your image based on the effect you want for the long-exposure.
Export Full-resolution render -> JPEG, saved to the in-app library or your phone's photo library. You can also export a build-up video — a time-lapse .mov of the exposure accumulating frame by frame.

Features

  • Live Photo & video import: any clip in your library works
  • In-app capture: locked exposure and white balance for consistent frames
  • Interactive timeline: see every frame, drag to choose your range
  • Three blend modes: Average - Lighten - Darken
  • Frame alignment: keeps the background sharp on handheld shots
  • Exposure matching: kills brightness flicker between frames
  • Motion smoothing: optical-flow in-betweens turn ghosted streaks continuous
  • Before/After: hold the preview to compare against the original frame
  • Build-up video: export a time-lapse of the exposure accumulating frame by frame
  • In-app library: browse, share, or save past exposures

Tech stack

Layer Technology
UI SwiftUI
GPU blend Metal compute shaders
Frame decode AVFoundation (AVAssetReader)
Video export AVFoundation (AVAssetWriter, H.264)
Registration Vision (VNTranslationalImageRegistrationRequest)
Motion smoothing Vision (VNGenerateOpticalFlowRequest) + Metal warp kernel
Color ops Core Image
Photo access PhotoKit
Capture AVCaptureSession

No third-party packages. iOS 17+, iPhone only.


Repository layout

long-exposures/ 
  Engine/
    BlendEngine.swift     
    BlendKernels.metal    
  Services/
    ImportService.swift   
    RegistrationService.swift
    NormalizationService.swift
    OpticalFlowService.swift  
    ExportService.swift   
    VideoExportService.swift
    CaptureService.swift
    LibraryStore.swift   
  Models/
    FrameStore.swift      
    EditorViewModel.swift 
    Exposure.swift        
    AppSettings.swift     
  Views/
    EditorView.swift      
    TimelineStrip.swift   
    CaptureView.swift     
    LibraryView.swift   
    OnboardingView.swift
    PermissionPriming.swift
landing/                  

App Screenshots:

Before After
Before After

Setup Instructions:

Go to the latest release and follow the instructions there.

About

iOS app that turns your Live Photos and videos into real long-exposure shots

Topics

Resources

Stars

10 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages