svelte-frame-extractor Svelte Themes

Svelte Frame Extractor

A modern, browser-based video frame extraction tool built with Svelte 5 and Shadcn-Svelte. Extract frames from video files with precision, add watermarks, and download resultsโ€”all without uploading files to any server.

๐ŸŽฅ Svelte Frame Extractor

A modern, browser-based video frame extraction tool built with Svelte 5 and Shadcn-Svelte. Extract frames from video files with precision, add watermarks, and download resultsโ€”all without uploading files to any server.

โœจ Features

  • ๐Ÿ”’ 100% Private: All processing happens in your browserโ€”videos never leave your device
  • ๐ŸŽฏ Multiple Extraction Methods:
    • Interval: Extract frames at regular time intervals
    • Count: Extract a specific number of evenly distributed frames
    • Range: Extract frames from a specific time range
  • ๐Ÿท๏ธ Watermark Support: Add customizable text watermarks with:
    • Custom text, font size, and color
    • Adjustable opacity and positioning
    • Real-time preview
  • ๐Ÿ“ธ Format Options: Export as JPEG or PNG
  • โฌ‡๏ธ Smart Downloads:
    • Single frame download for individual frames
    • ZIP archive for multiple frames
  • ๐ŸŽจ Beautiful UI: Modern glassmorphism design with smooth animations
  • ๐Ÿ“ฑ Responsive: Works perfectly on desktop and mobile devices

๐Ÿš€ Getting Started

Prerequisites

  • Bun (recommended) or Node.js 18+

Installation

# Clone the repository
git clone https://github.com/zxce3/svelte-frame-extractor.git
cd svelte-frame-extractor

# Install dependencies
bun install

Development

# Start the development server
bun run dev

# Or with auto-open browser
bun run dev -- --open

The application will be available at http://localhost:5173

๐Ÿ—๏ธ Building

# Create production build
bun run build

# Preview production build
bun run preview

๐Ÿ› ๏ธ Tech Stack

๐Ÿ“ Project Structure

src/
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ VideoUpload.svelte       # Drag & drop video upload
โ”‚   โ”‚   โ”œโ”€โ”€ VideoPreview.svelte      # Video player with controls
โ”‚   โ”‚   โ”œโ”€โ”€ ExtractionSettings.svelte # Frame extraction configuration
โ”‚   โ”‚   โ”œโ”€โ”€ ExtractedFrames.svelte   # Frame gallery with selection
โ”‚   โ”‚   โ”œโ”€โ”€ VideoProcessor.svelte    # Core frame extraction logic
โ”‚   โ”‚   โ”œโ”€โ”€ ui/                      # Shadcn-Svelte UI components
โ”‚   โ”‚   โ””โ”€โ”€ page/                    # Page-specific components
โ”‚   โ””โ”€โ”€ utils.ts                     # Utility functions
โ”œโ”€โ”€ routes/
โ”‚   โ”œโ”€โ”€ +layout.svelte               # App layout
โ”‚   โ””โ”€โ”€ +page.svelte                 # Main application page
โ””โ”€โ”€ app.css                          # Global styles and animations

๐ŸŽฎ Usage

  1. Upload Video: Drag and drop a video file or click to select
  2. Configure Extraction:
    • Choose extraction method (Interval/Count/Range)
    • Set parameters (interval time, frame count, time range)
    • Select output format (JPEG/PNG)
    • Optional: Enable and customize watermark
  3. Extract Frames: Click "Extract Frames" to start processing
  4. Review & Download:
    • Preview extracted frames
    • Select/deselect frames as needed
    • Download individual frames or all selected frames as a ZIP archive

๐ŸŒŸ Component Architecture

The application is built with a modular component architecture:

  • VideoUpload: Handles file selection with drag-and-drop support
  • VideoPreview: Displays video with HTML5 player controls
  • ExtractionSettings: Manages all extraction configuration options
  • ExtractedFrames: Shows frame gallery with selection capabilities
  • VideoProcessor: Contains core video processing logic and canvas operations

๐ŸŽจ Design System

  • Colors: Custom color palette with dark/light mode support
  • Typography: Optimized font hierarchy with proper contrast
  • Animations: Smooth transitions and micro-interactions
  • Layout: Responsive grid system with mobile-first approach

๐Ÿ”ง Configuration

The project uses standard SvelteKit configuration files:

  • svelte.config.js - Svelte configuration
  • vite.config.ts - Vite build configuration
  • tailwind.config.js - TailwindCSS configuration
  • tsconfig.json - TypeScript configuration

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments


Made with โค๏ธ using Svelte 5 and modern web technologies.

Top categories

svelte logo

Need a Svelte website built?

Hire a professional Svelte developer today.
Loading Svelte Themes