Replies: 2 comments 8 replies
-
This likely would be out of scope, but proposing for sake of discussion (potentially this suggestion needs to be moved into #364 or be it's own discussion):
Within the context of #364 where the desire is to set a "playback sink", I wonder if it would be instead more simple to create a sort of "navidrome satellite" which would be a copy of this web player paired up with something like mpv (with its |
Beta Was this translation helpful? Give feedback.
-
Would this player suit the bill (mostly)? https://cookpete.com/react-player/ |
Beta Was this translation helpful? Give feedback.
-
Navidrome Web Player Requirements
Introduction
In light of the deprecation of the React Music Player, it has become necessary to find a new solution for Navidrome's music player. This requirements document aims to outline the essential components needed for developing a new web player that will address long-standing issues and provide better overall functionality. The new player should be built on a React/Material-UI framework, compatible with most browsers and media formats, and easily extensible.
1. Background
Navidrome is currently using its own fork of the React Music Player with a couple of bug fixes applied to it. The decision has been made to develop a new player to better suit the needs of the project. Some previous discussions about this can be found on our Discord (ex: https://discord.com/channels/671335427726114836/704303730660737113/861006516315881522)
2. Requirements
The new music player should meet the following criteria:
2.1. Written in React/Material-UI
The player must be developed using the React/Material-UI framework to seamlessly blend into Navidrome's existing UI and support theming.
2.2. Browser and Format Compatibility
The player must be compatible with most, if not all, browsers and support the main media formats. It should be based on the HTML5 Media Player.
2.3. Gapless Playback
The player must support gapless playback, as described in issue #745.
2.4. Normalization/ReplayGain Support
The player must include normalization and ReplayGain support, as discussed in issue #233.
2.5. Remote API Control
The player must have the capability to control the remote API for Jukebox, as described in issue #364.
2.6. Internet Radio Integration
The player should integrate well with the Internet Radio feature, displaying the current song being played if the information is available.
2.7. Extensibility
The player's UI should be easy to extend, allowing for the addition of more options in the future.
2.8. Internationalization
The player must support internationalization, allowing for translations and localization to cater to users from different regions and languages.
2.9. Accessibility
The player should be designed with accessibility in mind, ensuring that it is usable by individuals with disabilities.
2.8. Separation as an Independent Project
The player may be developed as a separate project, if necessary.
3. Implementation Details
The initial idea is to create a React player using the useAudioPlayer library, which allows the specification of an audio provider. This would enable an HTML5 audio provider for playback in the browser and a remote audio provider for controlling the Jukebox. However, it is unclear if the useAudioPlayer library supports gapless playback. If not, a workaround could involve creating a new provider that wraps the Stitches library.
4. Conclusion
This requirements document outlines the necessary components for the development of a new Navidrome music player. The player should be built using the React/Material-UI framework and be compatible with most browsers and media formats. It must support gapless playback, normalization, ReplayGain, remote API control, Internet Radio integration, extensibility, accessibility, and internationalization. Implementation using the useAudioPlayer library is proposed, with a potential workaround for gapless playback using the Stitches library if needed.
Beta Was this translation helpful? Give feedback.
All reactions