RSPlayer

![](https://github.com/ljufa/rsplayer/actions/workflows/ci.yml/badge.svg) ![](https://github.com/ljufa/rsplayer/actions/workflows/cd.yml/badge.svg) ![](https://github.com/ljufa/rsplayer/actions/workflows/docker.yml/badge.svg) ![](https://img.shields.io/github/v/release/ljufa/rsplayer) ![](https://img.shields.io/github/license/ljufa/rsplayer?style=flat-square) ![](https://img.shields.io/badge/PRs-Welcome-brightgreen.svg?style=flat-square) [![rsplayer](https://snapcraft.io/rsplayer/badge.svg)](https://snapcraft.io/rsplayer) # RSPlayer RSPlayer is an open-source music player written in Rust. Run it as a **headless server** on a NAS, home server or Raspberry Pi and control it from any browser or phone - or install the **desktop app** on your computer. 🏠 **[Website](https://rsplayer.de)** · 🎧 **[Online demo](https://demo.rsplayer.de)** · 📖 **[Documentation](https://docs.rsplayer.de/)** · ⬇️ **[Latest release](https://github.com/ljufa/rsplayer/releases/latest)** https://github.com/user-attachments/assets/7cf6ef93-2251-4f85-a1cb-be5865a257d5 ## Highlights - Pure-Rust playback engine ([Symphonia](https://github.com/pdeljanov/Symphonia) + [cpal](https://github.com/rustaudio/cpal)) with low-latency ALSA / PipeWire output, or play straight in your browser - FLAC, MP3, AAC, OGG Vorbis, WAV, AIFF, CAF, DSD (DSF/DFF), APE - Multiroom: synchronized playback across devices with automatic discovery - Parametric EQ and DSP presets, EBU R128 loudness normalization, automatic resampling - Internet radio and a podcast client - subscribe to shows and resume episodes where you stopped - Visualizer, synchronized lyrics, library browsing, dynamic playlists - SMB/NFS network share mounting, Home Assistant integration, DIY hardware control See the [full feature list](https://docs.rsplayer.de/#/?id=features) and [feature comparison](https://docs.rsplayer.de/#/feature_parity). ## Install **Which one do I need?** | | Linux | macOS · Windows | Android | |---|---|---|---| | **Server** - runs in the background, you control it from a browser or phone. Best for a Raspberry Pi, NAS or always-on audio PC. | [Install script](#linux-server) | [Download](#macos-and-windows) | - | | **Desktop app** - a normal app window on the computer you're using. | [Snap / Flatpak / script](#linux-desktop-app) | [Download](#macos-and-windows) | [APK](#android) | | **Docker** | [docker run](#docker) | - | - | ### Linux server Works on Debian, Ubuntu, Raspberry Pi OS, Fedora and Arch, on x86_64, ARM (every Raspberry Pi) and RISC-V: ```bash bash <(curl -s https://raw.githubusercontent.com/ljufa/rsplayer/main/install.sh) ``` Then open **`http://`** (for example `http://raspberrypi.local`) in a browser. Updates come with your normal `apt upgrade` / `dnf upgrade`.
Prefer to add the package repository yourself? Debian / Ubuntu / Raspberry Pi OS: ```bash sudo curl -fsSL -o /usr/share/keyrings/rsplayer.gpg https://ljufa.github.io/rsplayer-pkg/rsplayer.gpg echo "deb [signed-by=/usr/share/keyrings/rsplayer.gpg] https://ljufa.github.io/rsplayer-pkg/deb stable main" | sudo tee /etc/apt/sources.list.d/rsplayer.list sudo apt update && sudo apt install rsplayer ``` Fedora / RHEL / openSUSE: ```bash sudo curl -fsSL -o /etc/yum.repos.d/rsplayer.repo https://ljufa.github.io/rsplayer-pkg/rpm/rsplayer.repo sudo dnf install rsplayer ``` `.deb`, `.rpm` and `.pkg.tar.zst` files for manual install are on the [release page](https://github.com/ljufa/rsplayer/releases/latest).
### Linux desktop app #### Native .deb/.rpm package ```bash bash <(curl -s https://raw.githubusercontent.com/ljufa/rsplayer/main/install_desktop.sh) ``` #### Snap on Ubuntu ```bash sudo snap install rsplayer ``` #### Flatpak ```bash flatpak install https://ljufa.github.io/rsplayer-flatpak/io.github.ljufa.rsplayer.flatpakref ``` The Snap and Flatpak are sandboxed. For bit-perfect output to USB DACs, see [sandbox permissions](https://docs.rsplayer.de/#/installation?id=desktop-app-flatpak-and-snap). ### macOS and Windows Download from the [latest release](https://github.com/ljufa/rsplayer/releases/latest): | | Server | Desktop app | |---|---|---| | **macOS** | `rsplayer_darwin_arm64` (Apple Silicon) or `rsplayer_darwin_amd64` (Intel) - `chmod +x` and run | `.dmg` | | **Windows** | `rsplayer_windows_amd64.exe` - just run it | `rsplayer-desktop_windows_amd64.exe` | After starting the server, open `http://localhost:8000`. On Windows, installed ASIO drivers can be selected in Settings → Audio interface. More in the [macOS](https://docs.rsplayer.de/#/installation?id=macos) and [Windows](https://docs.rsplayer.de/#/installation?id=windows) guides. > ASIO is a trademark and software of Steinberg Media Technologies GmbH. ### Android Download `rsplayer__android.apk` from the [latest release](https://github.com/ljufa/rsplayer/releases/latest) and open it on the phone (Android 8.0+). The full player runs inside the app: put music in the shared **Music** folder, grant the media permission on first start, and playback works offline with lock-screen controls. Details in the [Android guide](https://docs.rsplayer.de/#/installation?id=android). [Get it on Obtainium](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22de.rsplayer.app%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fljufa%2Frsplayer%22%2C%22author%22%3A%22ljufa%22%2C%22name%22%3A%22RSPlayer%22%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22_android_%28arm64-v8a%7Carmeabi-v7a%29%5C%5C%5C%5C.apk%24%5C%22%7D%22%7D) With [Obtainium](https://obtainium.imranr.dev/) the app updates itself from GitHub releases: tap the badge on the phone and it picks the APK for your device. ### Docker ```bash docker run -p 8000:80 -v ${MUSIC_DIR}:/music -v rsplayer_data:/opt/rsplayer --device /dev/snd -it --rm ljufa/rsplayer:latest ``` Then open `http://localhost:8000`.
docker compose ```yaml services: rsplayer: image: ljufa/rsplayer:latest devices: - /dev/snd ports: - 8000:80 volumes: - ${MUSIC_DIR}:/music:ro - 'rsplayer_volume:/opt/rsplayer' restart: unless-stopped volumes: rsplayer_volume: driver: local ```
**Next steps:** [configuration](https://docs.rsplayer.de/#/configuration) · [usage guide](https://docs.rsplayer.de/#/usage) · [troubleshooting](https://docs.rsplayer.de/#/troubleshooting) ## Home Assistant & DIY hardware Control RSPlayer from [Home Assistant](https://www.home-assistant.io/) with the [rsplayer_hacs_plugin](https://github.com/ljufa/rsplayer_hacs_plugin). For DIY builds, see [rsplayer_hardware](https://github.com/ljufa/rsplayer_hardware) and [rsplayer_firmware](https://github.com/ljufa/rsplayer_firmware). ## AI notice RSPlayer is built by a human maintainer who uses generative AI as a development tool. The maintainer decides what gets built, reviews the results, tests every release and signs off on everything that ships. RSPlayer itself contains no AI and makes no requests to AI services. Bug reports and pull requests are welcome whether or not AI tools were involved in making them. Everything that gets merged is reviewed by a person. ## Contributing Contributions are welcome - open an issue or a pull request. See [Building from source](https://docs.rsplayer.de/#/build). ## License MIT, see [LICENSE](LICENSE). ## Disclaimer The software is provided "as is", without warranty. Use sensible volume levels and follow your audio hardware's ratings. See the full [disclaimer](https://docs.rsplayer.de/#/disclaimer) and [privacy policy](https://rsplayer.de/privacy.html).