A powerful iOS app for extracting high-quality frames from videos with precision timing control.
π¬ Video Selection - Choose videos from your photo library
π Frame Marking - Mark specific frames during playback
πΎ High-Quality Extraction - Extract frames at original video quality
π Custom Album Support - Save extracted frames to custom photo albums
ποΈ Smart Delete - Remove frames from both app AND Photos library
π± Long-Press & Multi-Select - Advanced deletion with haptic feedback
β¨ Modern UI - Built with SwiftUI and iOS design guidelines
- Smart Delete: Deleting frames now removes them from BOTH the app AND your Photos library
- No More Clutter: No orphaned photos left behind in your camera roll
- Seamless Experience: Automatic photo library cleanup with proper permissions
- Long-Press Delete: Hold any frame to delete it instantly (with confirmation)
- Multi-Select Mode: Tap "Select" to choose multiple frames for bulk deletion
- Visual Feedback: Blue selection overlays and haptic feedback for all operations
- Smart Controls: Context-aware toolbar that adapts to your selection
- Background Deletion: Photo library cleanup happens asynchronously
- Error Handling: Graceful handling of already-deleted or missing assets
- Permission Management: Automatic photo library write access requests
Important Notice: This project is developed without an Apple Developer Program membership. This means:
- β No App Store Distribution - The app cannot be published to the App Store
- β No Code Signing - All builds are unsigned and for development/testing only
- β No TestFlight - No distribution through Apple's beta testing platform
- β Open Source - Full source code available for learning and contribution
- β Local Development - Can be built and run locally using Xcode
- β CI/CD Builds - Automated unsigned builds available through GitHub Actions and CodeMagic
If you want to use this app on your device, you'll need to build it yourself using Xcode or use the unsigned IPA files for development purposes.
This is a very barebone app as a side project of mine. The main goal of this app is to let me know how AI makes app, play around with the SwiftUI, and play with the Icon Composer. This app is very heavily developed using AI. Bugs are expected. Feel free to open a pull request and help me fix :D
- iOS 17.0 or later
- iPhone or iPad
- Photo library access permission
Note: Since this project doesn't have an Apple Developer Program membership, the app is not available on the App Store and cannot be code signed for general distribution.
- Clone this repository
- Open
FrameExtractionTool.xcodeprojin Xcode - Connect your iOS device or use the simulator
- Build and run directly from Xcode
For advanced users with development tools
- Download unsigned IPA files from GitHub Actions or CodeMagic CI/CD builds
- Install using development tools like Xcode, iOS App Installer, or enterprise deployment methods
- Note: Unsigned apps have limitations and may require re-installation periodically
If you have an Apple Developer Program membership:
- Fork this repository
- Update the bundle identifier in the project settings
- Configure code signing with your developer certificate
- Build and distribute as needed
- Launch the app and complete the onboarding tutorial
- Select a video from your photo library using the video picker
- Play the video and use the timeline to navigate to desired frames
- Mark frames by tapping the mark button during playback
- Review marked frames in the timeline (red markers)
- Extract frames to save high-quality images to your photo library
- Manage settings including custom album names and haptic feedback
- SwiftUI - Modern declarative UI framework
- AVFoundation - Video processing and playback
- Photos/PhotosUI - Photo library integration
- Combine - Reactive programming patterns
- Swift Concurrency - Modern async/await patterns
This project includes two CI/CD platforms for automated building and testing:
- Build Trigger: Push to main branch or pull requests
- Output: Unsigned IPA files for development and testing
- iOS SDK: Automatically detects and uses latest iOS SDK (iOS 26+)
- Configuration:
.github/workflows/build-ipa.yml
- ios-unsigned-workflow: Standard unsigned builds for development
- ios-release-workflow: Release builds triggered by Git tags (v1.0.0, etc.)
- Output: Unsigned IPA files suitable for development and testing
- Configuration:
codemagic.yaml
Both platforms produce unsigned IPA files that can be installed on development devices or simulators. No Apple Developer account is required.
This app requires photo library access to:
- Select videos for frame extraction
- Save extracted frames as images
- Create and manage custom photo albums
All processing happens locally on your device. No data is transmitted to external servers.
Contribution guidelines to be added
For questions, issues, or feature requests, please open an issue in this repository.
Built with β€οΈ by Casper N.Y. Ong using SwiftUI, GitHub Copilot and AVFoundation