A powerful desktop application for converting video files to HLS (HTTP Live Streaming) format and decoding HLS playlists back to common video and audio formats, built with Electron, React, and Shadcn UI.
- HLS Encode & Decode: Convert source videos to HLS or decode M3U8 playlists back to formats like MP4, MKV, MP3, and more
- Bundled FFMPEG: FFMPEG is automatically included - no manual installation required!
- Single & Bulk Workflows: Convert individual files or process multiple videos and playlists 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
- Setup Installer (
x64) - Portable (
x64)
- DMG Image (
universal)
- AppImage (
x64) - DEB Package (
x64)
Download ready-to-use releases from the Releases page.
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:linuxRapidHLS/
βββ 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 HLS encoding
β β βββ BulkConvert.tsx # Batch HLS encoding
β β βββ HLSConvert.tsx # Single HLS decoding
β β βββ HLSBulkConvert.tsx # Batch HLS decoding
β β βββ ConversionInProgress.tsx # Shared progress screen
β βββ 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
- Four main workflows: Single Convert, Bulk Convert, HLS Decode, and Bulk HLS Decode
- Quick access to both HLS encoding and decoding methods
- Footer with GitHub link to creator
- Configure FFMPEG installation path
- Set default split time for HLS segments
- First-time setup wizard with "Later" option
- Settings stored in localStorage
- Detailed information about RapidHLS
- Explanation of HLS technology and decode workflows
- Feature list and requirements
- Information about bundled FFMPEG
- Convert an individual video file to HLS output
- Process multiple video files into HLS output in one run
- Decode a single M3U8 playlist and TS segments to a chosen video or audio format
- Decode multiple M3U8 playlists in one batch job
- 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
- Node.js (v18 or higher)
- pnpm package manager
- FFMPEG is bundled automatically (no separate installation needed)
# Install dependencies
pnpm install
# Run in development mode
pnpm dev
# Format code
pnpm format
# Check formatting
pnpm format:check# Build for all platforms
pnpm build
# Build for specific platform
pnpm build:win # Windows (Setup + Portable)
pnpm build:mac # macOS (DMG)
pnpm build:linux # Linux (AppImage + deb)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
When launching RapidHLS for the first time:
- Splash Screen: Animated RapidHLS logo with "Created By AliESM"
- Auto-Redirect: Automatically redirected to Settings page
- Configure or Skip:
- Configure FFMPEG path and split time, then click "Save Settings"
- Or click "Later" to skip and explore the app
- Never Again: Settings page won't auto-show after first configuration
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
}pnpm dev- Start development serverpnpm build- Build for production (all platforms)pnpm build:win- Build for Windowspnpm build:mac- Build for macOSpnpm build:linux- Build for Linuxpnpm format- Format code with Prettierpnpm format:check- Check code formatting

