About this project

NymphCast is a software solution that transforms your choice of hardware into an audio and video source for a television or powered speakers. It enables streaming of audio and video over the network from a client device or media server, as well as internet media streaming to a NymphCast server, controlled by a client device or directly on the receiver. The server supports NymphCast apps (currently in preview) written in AngelScript to extend functionality, such as third-party audio/video streaming protocol support on the server side and customizable UIs in the client application. NymphCast requires a client device in all but the GUI ('Smart TV') mode. The server application (receiver) runs on a target device, while the client device functions as a remote control. Client-side core functionality is provided through the NymphCast library. ## Usage Scenarios - **NymphCast Audio**: Audio-only receiver mode with profile `nymphcast_audio_config.ini`. - **NymphCast Video**: Audio & Video receiver mode with profile `nymphcast_video_config.ini`. - **NymphCast ScreenSaver**: Like video mode but with image-based screensaver when not playing content, using `nymphcast_screensaver_config.ini`. - **NymphCast GUI**: Like video mode but with stand-alone GUI mode (smart TV) enabled (experimental), using `nymphcast_gui_config.ini`. ## Network Ports NymphCast Server uses UDP port 4004 for discovery and TCP port 4004 for playback. Systems running NymphCast MediaServer also need UDP & TCP ports 4005 reachable. Ensure these ports are whitelisted in firewall rules if applicable. ## Features & Status - **File Streaming** (100%): Streaming media files from client to server. - **Subtitles & Streams** (75%): Subtitle & stream selection support; supports embedded bitmap (e.g., PGS) subtitles. Text & external subtitles will be added in v0.2. - **Multi-cast** (85%): Synchronised multi-room playback (experimental in v0.1). - **MediaServer** (100%): Streaming from NymphCast MediaServer instances. - **URL Streaming** (100%): Streaming from URLs. - **Codec Support** (100%): Supports all codecs supported by ffmpeg. **Experimental Features:** - **SmartTV** (75%): Stand-alone GUI mode with EmulationStation-based GUI integrated. - **Apps** (25%): AngelScript-based apps with CLI and HTML-based GUI implementations. - **Local Media** (25%): Playback of local media with basic implementation in v0.2-alpha0. ## NymphCast Ecosystem - **NymphCast Server**: Receiver end-point for clients. - **LibNymphCast**: Library for developing NymphCast clients. - **NymphCast Client**: CLI-based client. - **NymphCast Player**: Graphical, Qt-based client and SDK reference implementation. - **NymphCast MediaServer**: Server application for making media content available to clients. ## Platform Support The NymphCast Player client has been compiled and used on Windows (7, 10), Linux (x86, ARM: Arch, Debian), Android (8+), FreeBSD (14.1), and Haiku (R1 Beta 5). The server works on any platform supported by a C++17 toolchain and LibPoco & ffmpeg dependencies, including Windows, MacOS, Linux, and BSD. Tested platforms include x86_64 Windows, Linux, FreeBSD, Haiku, Raspberry Pi 4 (up to 1080p at 24 FPS h.264), and others with varying hardware acceleration support. ## Getting Started To start using NymphCast, you need a device for the server (likely an SBC or Linux system). Releases are available on GitHub, with packages for FreeBSD, Alpine Linux, and PostmarketOS. Pre-compiled binaries for Android and Windows are also available. The server binary can be started with a configuration flag, e.g., `./nymphcast_server -c nymphcast_audio_config.ini`. The server listens on all network interfaces and supports options like `-v` for version output. ## Building From Source Building instructions are provided for the server and player in the `doc/` folder. The repository contains the server, client SDK, and NymphCast Player client sources. ## Developer's Guide Development focuses on the server and protocol. Third parties are encouraged to contribute server-side app support. Documentation is hosted at the Nyanko website. ## License NymphCast is fully open source under the 3-clause BSD license. The project relies on donations via Ko-Fi or direct donation to support continued development.