Library / SDK
SPlayer-Dev/SPlayer-Next avatar
SPlayer-Dev/SPlayer-Next

SPlayer-Next: desktop playback with synchronized lyrics

🎵 Cross-platform desktop music player with rich lyric support and wide audio format compatibility. 跨平台桌面音乐播放器,支持丰富歌词与多种音频格式

1,434 stars145 forksTypeScriptAGPL-3.0

At a glance

What is it?
SPlayer-Next combines FFmpeg decoding, Rust native modules, local-library tools, streaming servers, and detailed lyric displays in one Electron player. Its native build is substantial, cross-compilation is unsupported, and AGPL-3.0 affects modified or distributed builds.
Who is it for?
SPlayer-Next fits users who want local music management, server connectivity, metadata editing, synchronized lyrics, and desktop media integration in one application. It is a poor fit for a lightweight player, a cross-compiled release pipeline, or an organization unwilling to assess AGPL-3.0 obligations.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Why SPlayer-Next targets feature-heavy music libraries

SPlayer-Next addresses the needs of desktop users who want more than a small local-file player. Its documented scope combines broad audio decoding, local music-library management, streaming servers, lyric presentation, metadata editing, downloads, and operating-system integration. The result is aimed at people who maintain their own music collection or connect the application to services such as Subsonic, Navidrome, Jellyfin, and Emby.

The README lists MP3, FLAC, WAV, AAC, OGG, APE, and other formats decoded through FFmpeg. It also documents real-time FFT visualization, cover-based theming, Light, Dark, and Auto theme modes, a download manager, and Last.fm scrobbling. These features give the application a broader operational surface than a conventional audio player, but they also increase the number of platform, service, and native-module dependencies that require evaluation.

SPlayer-Next is presented as the successor to SPlayer. The README does not document a migration procedure or identify which library data, settings, or playlists can be transferred between the two applications. Existing SPlayer users should therefore treat migration as an unverified part of adoption rather than assuming compatibility.

The repository is not archived. Its last push was on 2026-10-15. Recent releases include v1.1.0 on 2026-09-02, v1.2.0-alpha.1 on 2026-09-14, and nightly v1.2.0-nightly.946 on 2026-10-14. The package metadata currently reports version 1.2.0-beta.1, while the default branch is `dev`, so source builds and packaged releases may not describe the same release stage.

How SPlayer-Next moves audio through its native stack

Based on the repository layout, SPlayer-Next uses Electron for the desktop shell, Vue and TypeScript for the interface, and a Rust workspace for native audio and operating-system functions. The top-level `electron/`, `src/`, and `native/` directories separate the desktop process, application interface, and native implementation. The `Cargo.toml` workspace includes `audio-engine`, `audio-capture`, `media-ctrl`, `taskbar-lyric`, `taskbar-thumbnail`, and `opencc`.

The documented `audio-engine` module combines FFmpeg decoding, playback, FFT spectrum generation, and cover extraction. Placing these functions in a native module gives the Electron application direct access to media processing without requiring the interface itself to perform decoding. The README describes the combination of FFmpeg and Rust as the high-performance audio engine, although it does not publish latency, memory, or file-compatibility measurements.

System integration is divided into another native module. `media-ctrl` handles system media controls and Discord Rich Presence. The application documentation associates these integrations with Windows SMTC, Linux MPRIS, and macOS Now Playing. The `taskbar-lyric` module handles native Windows taskbar lyric rendering. The Rust workspace also includes modules not explained in the cleaned README, including audio capture, taskbar thumbnails, and OpenCC. Their exact public interfaces are not documented there.

The data flow is clear at a functional level, but not at the API level. A track enters the audio engine, FFmpeg decodes supported audio, the player drives playback, and the interface receives visual data such as an FFT spectrum or extracted cover. Lyrics follow a separate presentation path through desktop, dynamic-island, or taskbar lyric windows. The README does not document IPC boundaries, lyric parser behavior, server synchronization, cache policies, or error handling, so those details require inspection in `electron/`, `shared/`, and `native/` before fine-grained architectural claims are justified.

Installing SPlayer-Next and launching the development application

The source-development requirements are Node.js 22 or newer, pnpm 10 or newer, and a Rust toolchain. The repository package narrows the Node.js requirement to 22.19.0 or newer and declares `[email protected]` as its package manager. These requirements matter because `pnpm dev` and `pnpm build` compile native modules before processing the Electron application.

Install dependencies from the repository root with the documented command:

bash
pnpm install

The README says that development and production builds compile the native modules automatically. After installation, start the development application with:

bash
pnpm dev

That script is defined as a native debug build followed by the Electron development launcher. Work only on the interface can skip native compilation through the documented environment variable:

bash
SKIP_NATIVE_BUILD=true

Skipping the native build can speed up interface-only work, but the resulting application does not complete the normal audio and operating-system integration path. The README does not document a standalone installed-player setup command. Users who do not intend to build the source should use the project's release distribution instead.

For a complete local build, run:

bash
pnpm build

The package defines this as cleanup, native compilation, type checking, and the `electron-vite` build. Platform packaging is handled separately with `pnpm build:win`, `pnpm build:mac`, or `pnpm build:linux`. The Linux target produces AppImage, deb, rpm, tar.gz, and pacman packages according to the README.

Lyric formats and streaming servers shape SPlayer-Next's daily use

SPlayer-Next treats lyrics as timed presentation data rather than plain text attached to a track. It supports LRC, QRC, YRC, and TTML, with word-by-word highlighting and translations. The interface can show lyrics in a desktop window, a dynamic-island window, or a native Windows taskbar surface. This makes timing quality and lyric metadata important parts of the listening experience.

The project does not document lyric synchronization beyond the supported formats and highlighting behavior. It does not state whether local files can embed every supported lyric type, whether translations require a particular server, or how conflicting timed lyrics are selected. The README also does not explain how QRC, YRC, and TTML sources are mapped when one track has several files. Those are functional details a prospective user may need to inspect in the relevant components before relying on a specific lyric workflow.

Remote libraries are supported through Subsonic, Navidrome, Jellyfin, and Emby. The project documents multi-server operation and automatic connection, but it does not publish authentication details, synchronization rules, offline behavior, or the exact metadata mapping for each service. A server-compatible response also does not guarantee that every local-player feature, such as cover extraction or metadata editing, applies to remote tracks. The README does not say where changes are written when a track originates from a server.

Download management, tag editing, Last.fm scrobbling, Discord Rich Presence, and native media controls broaden the use cases. At the same time, each depends on an external contract or operating-system capability. SPlayer-Next is consequently better suited to a user willing to configure these boundaries than to a narrowly scoped player whose only requirement is opening and playing a file.

Native compilation, licence terms, and maintenance obligations

The largest technical adoption cost is the native build chain. `pnpm dev` and `pnpm build` compile Rust modules automatically, so a working source checkout needs compatible Rust tooling and a platform environment that can build the selected modules. The README does not publish minimum compiler versions, operating-system build matrices, or troubleshooting instructions for failed native builds.

Packaging has another explicit boundary: builds target the current architecture only, and cross-compilation is not supported. A team that wants Windows, macOS, and Linux artifacts cannot rely on one build host to produce all of them. It needs suitable build environments for each target or must consume prebuilt releases. The README does not document the signing, notarization, or automatic update workflow, so those costs cannot be quantified from the documentation.

SPlayer-Next is licensed under AGPL-3.0. The README states that modifications and distributions must be released under AGPL-3.0 with complete source code, and that derivative works must preserve the licence and original copyright information. It also says that commercial or for-profit use must provide the source code and a link to the original project. These are project statements about licence expectations, not legal advice. Any organization that modifies, hosts, bundles, or sells the application needs a separate assessment of how AGPL-3.0 applies to its distribution model.

Maintenance activity is current based on repository status. The project is not archived, and its last push was on 2026-10-15. Release channels include stable, alpha, and nightly outputs, which means adopters must choose whether they want a fixed release or frequent pre-release builds. The README does not define a long-term support policy or a compatibility guarantee for existing library and lyric data.

SPlayer-Next versus a conventional FFmpeg or Electron player

A conventional FFmpeg-based player usually exposes a smaller chain of responsibilities: decode a selected file, send audio to an output device, and show basic playback state. An Electron wrapper can add a graphical interface, but it does not necessarily include a Rust audio engine, lyric windows, server integrations, metadata editing, or native taskbar components. SPlayer-Next packages those concerns into one application and accepts the resulting build and dependency cost.

The practical difference is integration. FFmpeg supplies codec reach, while SPlayer-Next adds an audio module for playback and visualization, a Vue interface, native system-media handling, and several lyric surfaces. Its service model is broader than a local player because it can connect to multiple streaming servers. These additions reduce the need to assemble separate utilities for lyrics, downloads, tag editing, and desktop media control.

The trade-off is less control over a minimal stack. Electron and Rust both add maintenance surfaces, while AGPL-3.0 and third-party services affect distribution decisions. Cross-compilation is unavailable, so producing several platform packages also requires separate build preparation. A simpler player may therefore be the better choice when the required scope is limited to local playback and small installers.

SPlayer-Next is the wrong tool when the operating environment cannot compile or load the required native modules, when one host must cross-compile every desktop target, or when the intended distribution conflicts with the project's stated AGPL-3.0 expectations. It is more relevant when the documented feature set is needed and each external service can be used within its applicable terms.

Editorial conclusion

SPlayer-Next fits users who want local music management, server connectivity, metadata editing, synchronized lyrics, and desktop media integration in one application. It is a poor fit for a lightweight player, a cross-compiled release pipeline, or an organization unwilling to assess AGPL-3.0 obligations. Before adoption, verify a native build on the target operating system and architecture, test the required media services with the intended account, and review the licence terms for any modified or distributed version.

Frequently asked questions

Which audio formats can SPlayer-Next play?

The README lists MP3, FLAC, WAV, AAC, OGG, APE, and additional formats decoded through FFmpeg.

Does SPlayer-Next support synchronized lyrics?

SPlayer-Next supports LRC, QRC, YRC, and TTML, including word-by-word highlighting and translations. Lyrics can appear in desktop, dynamic-island, and taskbar lyric windows.

Can I build SPlayer-Next on Windows, macOS, or Linux?

The README identifies Windows, macOS, and Linux as supported platforms and provides separate `pnpm build:win`, `pnpm build:mac`, and `pnpm build:linux` scripts. Builds target the current architecture only because cross-compilation is not supported.

Official sources

  1. License: AGPL-3.0
  2. Project website
  3. README
  4. Releases
  5. SPlayer-Dev/SPlayer-Next on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/splayer-dev-splayer-next.svg)](https://hysenlabs.com/projects/splayer-dev-splayer-next)

Was this useful?