🎬 HDR & Dolby Vision · 🌐 WebDAV + DLNA + SMB Streaming · 📱 Web Remote Controller
⬇️ Download Latest Release · 🐞 Report a Bug
An mpv-powered video player with network streaming and browser-based remote control.
Soia is a high-performance video player built on mpv, designed for smooth playback of everything from local Dolby Vision content to remote WebDAV, DLNA, and SMB streams — all in one fast, elegant, cross-platform experience.
- mpv-powered playback with hardware acceleration (4K, HDR, Dolby Vision*)
- Picture in Picture (PiP) on macOS and Windows
- Dual subtitles for bilingual viewing
- Fuzzy subtitle matching for both local and network media
- Online subtitle search via OpenSubtitles and SubSource
- Advanced subtitle appearance controls for font, color, size, and position
- Custom shaders for high-quality scaling and rendering
- Anime mode with auto-detection and shader auto-apply
Dolby Vision is not currently supported on Linux
- WebDAV browsing and streaming
- DLNA and SMB/Samba discovery, browsing, and playback
- M3U (IPTV) parsing and playback
- Persistent playlists, including a built-in Favorites playlist
- Smart buffering with real-time speed indicators
- Resume playback with history tracking
- Control Soia playback from a web browser on the same local network
- Play, pause, seek, adjust volume, and select audio or subtitle tracks remotely
- Browse and play playlists or configured WebDAV, DLNA, and SMB media sources
- Continue network browsing from the folder last opened in the desktop app
- Enable Remote Controller in Settings, then show its QR code there or from the playback context menu to pair and connect in seconds
- Pair multiple remote devices to control the same player together
Both interfaces are equal clients of the same backend:
- Native media keys and Now Playing integration (macOS)
- Borderless window across macOS, Windows, and Linux (Wayland)
- Experimental Wallpaper Mode (Windows)
- Flexible playback preferences (speed, seek, auto-play, skip intro)
Download from the release page.
On macOS, you can install it with Homebrew:
brew tap FengZeng/soia
brew install --cask soiaOn Windows, you can install it with WinGet:
winget install soiaOr you can build it yourself. Support macOS 13+, Windows, and Linux.
Linux builds have been tested on Ubuntu and Fedora Wayland sessions (X11 is not currently supported).
Q: macOS says "Soia is damaged and can't be opened" or cannot verify it is free of malware.
A: This happens because the app is not yet signed with an Apple Developer ID certificate, so macOS may block it on first launch.
Easy fix (recommended):
- Right-click Soia.app
- Click "Open"
- Click "Open" again in the dialog
If that doesn't work, run:
sudo xattr -r -d com.apple.quarantine /Applications/Soia.appYou can also go to System Settings -> Privacy & Security and click "Open Anyway" (it appears after a blocked launch attempt).
The app is open-source and its code is publicly available for anyone to inspect.
- Frontend: Vue 3 + TypeScript + Vite
- App runtime: Tauri v2
- Backend: Rust
- Playback engine: libmpv
- Persistence: SQLite (
media.db) + JSON state files
-
Prerequisites
Ensure you have the following installed:
- Node.js 18+ & pnpm 10.x
- Rust (stable toolchain)
- Tauri build prerequisites for your specific platform
-
Setup
# Automatically prepares runtime libs pnpm install -
Run
# Launches with auto-injected library paths pnpm tauri dev
Common release build commands:
pnpm bundle:mac:release
pnpm bundle:linux:release
pnpm bundle:win:releaseSpace: play/pauseLeft / Right: seek backward/forward (step from settings)I: toggle playback info panel- Double-click video area: toggle fullscreen
- Middle-click during playback: hide or show controls; mouse movement stays suppressed for 3 seconds after hiding
App data is stored in Tauri's local app data directory and includes:
media.db: playlists, playlist entries, playback history, and local installation/device metadatastate.json: UI state and preferencesnetwork_connections.json: saved network connectionsthumbnails/: captured artwork for Now Playing
Saved network credentials are currently persisted in network_connections.json as plain text. Avoid using sensitive production credentials on shared machines.
- If Linux build fails with
glib-2.0/gdk-3.0/*.pcnot found, install the Ubuntu deps:
sudo apt update
sudo apt install -y \
build-essential \
curl \
wget \
file \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
pkg-config \
libwebkit2gtk-4.1-dev-
Linux runtime note: current bundle targets Ubuntu Wayland sessions only; launching under pure
X11is not supported. -
If build fails with
Cannot find libmpv, run:
pnpm setup:libs-
If
pnpm setup:libsfails, confirm release access to:https://github.com/FengZeng/mpv/releases/tag/v0.41.0-r15- or set
MPV_RELEASE_ASSET_URLto a direct asset URL and retry.
-
If Linux/Windows bundle scripts report missing runtime manifest, generate it on the target platform:
pnpm sync:runtime:linux
pnpm sync:runtime:win- If you have a local bundled
mpv + dependenciesdirectory for dev testing, use:
pnpm setup:libs /absolute/path/to/mpv-bundleSoia is an independent project developed and maintained by @FengZeng.
While development is driven independently, issues and feedback are actively reviewed and addressed whenever possible.
If you find Soia useful, consider giving it a ⭐ Star — it helps the project grow and reach more users.
This project is licensed under the GNU General Public License v3.0 only (GPL-3.0-only).
See LICENSE for the full text.


