SpeedUpSI

SpeedUp

A native iOS video speed editor built with Swift and SwiftUI. Pick videos from your Photos library, preview them at adjustable playback speeds, and export time-scaled copies — with audio — back to your library.

Features

Tech Stack

Technology Usage
Swift / SwiftUI UI layer, state management, navigation
AVFoundation AVQueuePlayer, AVPlayerLooper, AVMutableComposition, AVAssetExportSession
PhotosUI PhotosPicker for native Photos library access
Photos PHImageManager, PHPhotoLibrary for asset fetching and saving
CoreMedia CMTime arithmetic for time-scaling composition tracks
UniformTypeIdentifiers Transferable conformance for video file handling

Architecture

SpeedUPSIApp            → App entry point
├── SplashView          → Animated launch screen (transitions to ContentView)
└── ContentView         → Main screen: video player, speed controls, export
    ├── VideoView       → AVQueuePlayer wrapper with looping and speed binding
    ├── SpeedPicker     → Custom horizontal scroll speed selector
    └── VideoSlot       → State-driven card (empty → uploading → ready)

State management: Local @State properties in ContentView with @Binding passed to child views.

Export pipeline: AVMutableComposition → insert video + audio tracks → scaleTimeRange by 1/speedAVAssetExportSession at highest quality → save to Photos library → clean up temp file.

Project Structure

SpeedUPSI/
├── SpeedUPSIApp.swift      # App entry point
├── ContentView.swift        # Main view, video loading, export engine, Photos fetchers
├── SpeedPicker.swift        # Custom horizontal scroll speed picker
├── SplashView.swift         # Animated splash screen with LightningBolt shape
├── VideoSlot.swift          # VideoState enum and state-driven card component
├── Info.plist               # App configuration
└── Assets.xcassets/         # App icon and asset catalog

SpeedUPSITests/
└── SpeedUPSITests.swift     # Unit tests (speed label formatting, VideoState, time-scaling math)

Build & Run

  1. Open SpeedUPSI.xcodeproj in Xcode
  2. Select an iOS Simulator or physical device
  3. Build and run (Cmd + R)

No external dependencies or package managers required.

Testing

xcodebuild test -scheme SpeedUPSI -destination 'platform=iOS Simulator,name=iPhone 15'

Tests cover:

License

This project is part of a personal 90-day iOS + AI learning challenge.