Skip to content

RapidHLS: The Fastest MP4 to HLS Converter & M3U8 Generator

License

Notifications You must be signed in to change notification settings

aliesm-com/RapidHLS

Repository files navigation

RapidHLS - HLS Video Converter

RapidHLS Platform License

A powerful desktop application for converting video files to HLS (HTTP Live Streaming) format, built with Electron, React, and Shadcn UI.

rapidhls


✨ Features

  • Bundled FFMPEG: FFMPEG is automatically included - no manual installation required!
  • Single & Bulk Conversion: Convert individual files or process multiple videos at once
  • Custom Settings: Optional custom FFMPEG path and default split time configuration
  • Dark Mode: Beautiful dark theme throughout the application
  • Custom Title Bar: Frameless window with minimize and close buttons
  • Multi-Platform: Support for Windows, macOS, and Linux
  • First-Time Setup: Guided settings configuration on first launch

πŸ“¦ Available Build Formats

Windows

  • NSIS Installer (x64, ia32)
  • Portable (x64, ia32)
  • ZIP Archive (x64, ia32)

macOS

  • DMG Image (x64, arm64, universal)
  • PKG Installer (x64, arm64, universal)
  • ZIP Archive (x64, arm64, universal)

Linux

  • AppImage (x64, arm64)
  • DEB Package (x64, arm64)
  • RPM Package (x64, arm64)
  • TAR.GZ Archive (x64, arm64)
  • Snap Package (x64)

rapidhls2

πŸš€ Download & Installation

Download ready-to-use releases from the Releases page.

πŸ› οΈ Building & Development

For complete build instructions, see BUILD.md.

Important: Use GitHub Actions for building all platforms, not local builds!

# Install dependencies
pnpm install

# Run in development mode
pnpm dev

# Build (for testing only - use GitHub Actions for production)
# For Windows
pnpm build:win

# For macOS
pnpm build:mac

# For Linux
pnpm build:linux

Project Structure

RapidHLS/
β”œβ”€β”€ electron/
β”‚   β”œβ”€β”€ main.ts          # Electron main process
β”‚   └── preload.ts       # Preload script for IPC
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ Layout.tsx         # Main layout with fixed TitleBar
β”‚   β”‚   β”œβ”€β”€ TitleBar.tsx       # Custom window controls
β”‚   β”‚   β”œβ”€β”€ SplashScreen.tsx   # Animated splash screen
β”‚   β”‚   └── ui/                # Shadcn UI components
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ Home.tsx           # Home page with conversion options
β”‚   β”‚   β”œβ”€β”€ Settings.tsx       # Settings configuration page
β”‚   β”‚   β”œβ”€β”€ About.tsx          # About page with app info
β”‚   β”‚   β”œβ”€β”€ SingleConvert.tsx  # Single file conversion
β”‚   β”‚   └── BulkConvert.tsx    # Bulk conversion
β”‚   β”œβ”€β”€ styles/
β”‚   β”‚   └── index.css    # Global styles and Tailwind imports
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   └── utils.ts     # Utility functions
β”‚   β”œβ”€β”€ types/
β”‚   β”‚   └── electron.d.ts # TypeScript definitions
β”‚   β”œβ”€β”€ App.tsx          # Main app with routing
β”‚   └── main.tsx         # React entry point
β”œβ”€β”€ public/              # Static assets
└── assets/              # Application assets

Pages

Home (/)

  • Two main conversion options: Single Convert and Bulk Convert
  • Quick access to conversion methods
  • Footer with GitHub link to creator

Settings (/settings)

  • Configure FFMPEG installation path
  • Set default split time for HLS segments
  • First-time setup wizard with "Later" option
  • Settings stored in localStorage

About (/about)

  • Detailed information about RapidHLS
  • Explanation of HLS technology
  • Feature list and requirements
  • Information about bundled FFMPEG

Single Convert (/single-convert)

  • Convert individual video files (Coming soon)

Bulk Convert (/bulk-convert)

  • Process multiple videos at once (Coming soon)

Technology Stack

  • Electron 28.0.0: Desktop application framework
  • React 18.2.0: UI library
  • TypeScript 5.3.2: Type-safe development
  • Vite 5.0.2: Fast build tool
  • React Router DOM 7.13.0: Client-side routing
  • Shadcn UI: Beautiful component library
  • Tailwind CSS 3.3.5: Utility-first CSS
  • Lucide Icons: Icon library

Development

Prerequisites

  • Node.js (v18 or higher)
  • pnpm package manager
  • FFMPEG is bundled automatically (no separate installation needed)

Installation

# Install dependencies
pnpm install

# Run in development mode
pnpm dev

# Format code
pnpm format

# Check formatting
pnpm format:check

Building

# Build for all platforms
pnpm build

# Build for specific platform
pnpm build:win    # Windows (NSIS + Portable)
pnpm build:mac    # macOS (DMG + ZIP)
pnpm build:linux  # Linux (AppImage + deb + rpm)

Navigation

The application uses React Router for navigation with a persistent TitleBar:

  • Settings Icon: Click to access settings page
  • Info Icon: Click to view about page
  • Window Controls: Minimize and close buttons in top-right

First-Time Experience

When launching RapidHLS for the first time:

  1. Splash Screen: Animated RapidHLS logo with "Created By AliESM"
  2. Auto-Redirect: Automatically redirected to Settings page
  3. Configure or Skip:
    • Configure FFMPEG path and split time, then click "Save Settings"
    • Or click "Later" to skip and explore the app
  4. Never Again: Settings page won't auto-show after first configuration

Settings Storage

Settings are stored in browser's localStorage:

{
  ffmpegPath: string,    // Path to FFMPEG executable
  splitTime: string,      // Default split time in seconds
  configured: boolean     // Whether user has configured settings
}

Scripts

  • pnpm dev - Start development server
  • pnpm build - Build for production (all platforms)
  • pnpm build:win - Build for Windows
  • pnpm build:mac - Build for macOS
  • pnpm build:linux - Build for Linux
  • pnpm format - Format code with Prettier
  • pnpm format:check - Check code formatting