Skip to content

sandhope/ReelPlayer

Repository files navigation

Reel Player

English | 中文

A desktop video player built with Wails, powered by a Go backend and a Vue 3 frontend. It features a cinema-inspired interface, subtitle support, playback progress memory, and an AB loop — just point it at your local videos and press play.

✨ Features

  • 🎬 Multi-format support: MP4, WebM, MKV, AVI, MOV, M4V, FLV (decoded natively by WebView2)
  • 📝 Subtitle support: auto-loads sibling .srt / .vtt / .ass files matching the video name
  • ⏱️ Playback progress memory: resumes each video from where you left off
  • 🔁 AB loop: set A/B markers to loop a segment repeatedly
  • 🎚️ Playback speed: adjustable rate (0.25×–2×)
  • 📐 Aspect ratio: auto, 16:9, 4:3, 1:1, and fill
  • 📸 Screenshot: capture the current frame as PNG, saved to your Pictures folder
  • 🎨 Multiple themes: Retro (warm brown), Dark (emerald), Light (sky blue), and Minimal (black & white)
  • 🔀 Playback controls: shuffle, repeat one/all, volume, seek, and previous/next
  • 📁 Local video library: import folders or individual files; the library is persisted and restored on restart
  • 🖥️ System tray: close to tray and restore from the tray icon
  • 🖼️ Frameless window: custom title bar and window controls
  • 🌐 Bilingual UI: Chinese and English with auto-detection
  • 📂 Drag & drop: drop files or folders onto the window to import

📸 Screenshots


Cinema

Midnight

Daylight

Noir

🏗️ Architecture

Layer Technology
Desktop framework Wails v2
Backend Go 1.25
Frontend Vue 3 + Vite
System tray energye/systray
Video decoding WebView2 (Chromium) built-in codecs

Backend modules:

  • main.go — application entry point; configures the Wails window and starts the media server
  • app.go — app logic bound to the frontend (library loading, file pickers, window controls, progress tracking)
  • library.go — video library management: scans files, resolves sibling subtitles, builds Videos
  • mediaserver.go — a dedicated loopback HTTP server that streams video and subtitle files via Range requests
  • store.go — library and playback progress persistence (saved to %AppData%/ReelPlayer/)
  • tray.go — system tray icon with show/quit menu

Note: media assets run on a separate loopback port (rather than the Wails asset server) so that streaming and seeking work correctly in both wails dev and production builds.

🚀 Getting Started

Prerequisites

  • Go 1.25+
  • Node.js (with npm)
  • Wails CLI: go install github.com/wailsapp/wails/v2/cmd/wails@latest
  • On Windows, the WebView2 runtime is required (usually pre-installed on Win10/11)

Development

Run in the project root for live frontend reload:

wails dev

To debug in a browser and call Go methods, open http://localhost:34115.

Build

Produce a redistributable, production build:

wails build

The output is ReelPlayer.exe.

📖 Usage

  1. Import a local video folder or individual files from the sidebar; the library is saved automatically.
  2. Drag & drop video files or folders onto the window to add them quickly.
  3. Place a .srt, .vtt, or .ass subtitle file in the same directory with the same name as the video to enable subtitles.
  4. Double-click the video area to toggle fullscreen.
  5. Use the AB loop markers to repeat a segment for study or review.
  6. Switch the interface style anytime via the theme switcher.

📂 Project Structure

ReelPlayer/
├── app.go              # App logic bound to the frontend
├── main.go             # Application entry point
├── library.go          # Video library & subtitle resolution
├── mediaserver.go      # Local media streaming server
├── store.go            # Library & progress persistence
├── tray.go             # System tray integration
├── util.go             # Shared utility helpers
└── frontend/           # Vue 3 frontend
    └── src/
        ├── components/     # UI components (player, controls, sidebar, etc.)
        ├── composables/    # Playback logic, settings & theming
        └── i18n/           # Internationalization messages

📄 Configuration

You can configure the project by editing wails.json. See the Wails project configuration docs for details.

About

A desktop video player

Resources

Stars

Watchers

Forks

Releases

Sponsor this project

Packages

Contributors

Languages