NymphCast

MayaPoschBSD-3-Clause更新放缓

一套可自托管的音视频投屏系统,支持自定义应用,能把媒体从服务器推送到各类客户端播放,适合搭建私有投屏方案。

Audio and video casting system with support for custom applications.

v0.2-alpha0发布于 2024-11-09 22:36 UTC2,573star83fork同步于 2026-11-07 07:33 UTC

怎么上手

由 README 提炼,执行前请确认
pkg install NymphCast
./nymphcast_server -c nymphcast_audio_config.ini
硬件要求按 README 说明

服务端需 C++17 工具链及 LibPoco、ffmpeg(libAV)、SDL2 依赖;可关闭视频输出仅做音频以省去图形要求。默认 ffmpeg 内部缓冲 32 kB、服务端缓冲 20 MB(可配置)。树莓派 4 实测 1080p 24FPS h.264,硬件加速支持有限且不支持 HEVC;树莓派 0/2/3、Odroid-C2、Banana Pro 的 ffmpeg 硬件解码不可用。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

把任意硬件变成电视或音箱的接收端,通过网络串流音视频并支持自定义应用

一套可自托管的音视频投屏系统,支持自定义应用,能把媒体从服务器推送到各类客户端播放,适合搭建私有投屏方案。

核心能力

  • 客户端串流本地文件、URL 或 MediaServer 内容到接收端
  • 基于 ffmpeg 支持其全部音视频编解码器
  • 用 AngelScript 编写 NymphCast 应用扩展服务端协议与 UI
  • 支持多房间同步播放,v0.1 中为实验特性
  • 提供 LibNymphCast 库与 Qt 图形客户端便于二次开发

容易踩的坑

服务端需通过 -c 指定配置文件才能启动,且发现用 UDP 4004、播放用 TCP 4004,MediaServer 另需 4005,防火墙要放行;除 GUI 模式外都必须有客户端设备作为遥控;预编译包只覆盖部分平台,其余需自行从源码编译。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.2-alpha0
  1. v0.2-alpha0v0.2 Alpha 0 release最新正式版2024-11-09 · 2024-11-09 22:36 UTC

    This release includes fixes & additions since the v0.1 release, and introduces a few new features and platforms. Although marked alpha, it should be at least as stable as v0.1 for the same features & platforms.

    New:

    • Platform support for Haiku (see notes) and Android (see notes).
    • Haiku: Requires R1 B5 or up, SDL2/Mesa bug (BLock unlock, issue #6400) => https://dev.haiku-os.org/ticket/6400
    • Android: API 27+, supports Android & Android/Google TV.
    • Server: Use Desktop start file for Linux Video/GUI mode instead of systemd service. (experimental)
    • Local media feature added to NCS. Configured via INI file. (experimental).

    Notes:

    • Multi-room playback partially validated.

    Known Issues:

    • Subtitles: PGS works, text-based not yet.
    • Android 9: Some specific files result in a crash due to a presumed AAudio issue.

    Binaries provided:

    • APKs for Android, NC Player & Server.
    • Windows installers for NC Player & Server.
  2. v0.1Version 0.12022-04-22 · 2022-04-22 20:25 UTC
    查看更新说明

    v0.1

    New

    • Everything (initial release).
    • Implements core streaming and playback functionality using the Client, Server & MediaServer components.
    • Implements the Audio-only mode.
    • Implements the Video mode (Audio + Video output).
    • Implements the Screensaver mode (Video + screensaver while idle).
    • Implements LCDProc support.

    Experimental

    • AngelScript-based applications (NymphCast Apps).
    • Multi-cast feature.
    • GUI-based interface mode (based on EmulationStation).

    Issues resolved

    • Initial release, ergo no previous issues.

    Known issues

    • Only non-text subtitles (e.g. BluRay/DVD-style PGS) are supported in this release.
    • Experimental features are what it says on the tin. Stability and other issues are expected.

    Notes

    As an initial release, NymphCast v0.1 is primarily focused on the core functionality of streaming media content, whether from a (HTTP/RTSP) URL, or a NymphCast Client or MediaServer instance.

    Supported media formats are those which are supported by the used ffmpeg (LibAV) libraries. This includes all common types and many less common ones. Playback performance is limited by the used hardware.

    The current NymphCast development process target is a v1.0 release, with each subsequent minor (0.x) release intended to add new features. Although care is taken to minimise the number of breaking changes between releases, long-term stability is not expected until v1.0.

  3. v0.1-rc1Release Candidate 1 (RC1)pre-release2022-03-15 · 2022-03-15 08:43 UTC
    查看更新说明

    This is the v0.1-RC1 prerelease. It supersedes RC0.

    Users are advised to upgrade all NymphCast servers and clients to this version as a number of potentially breaking changes have been introduced since RC0, along with many bug fixes and optimisations.

    Attached are a number of binaries:

    NCS installers:

    • Bullseye BCM2835 (Raspberry Pi Zero/1)
    • Bullseye BCM2836 (Raspberry Pi 2 v1.1)
    • Bullseye BCM2837 (Raspberry Pi 2 v1.2+, 3)
    • Bullseye BCM2711 (Raspberry Pi 4)
    • Windows 7+ x64.

    NCP client installers:

    NCMS installer:

    • Windows 7+ x64.
  4. v0.1-rc0First RC releasepre-release2021-12-29 · 2021-12-29 09:06 UTC
    查看更新说明

    This RC release constitutes all changes made during the RC0 development phase. It implements a number of missing features and fixes a range of bugs discovered during testing. The new development version now changes to RC1.

    Binaries will be provided here as they become available. Currently available are:

    • NymphCast Player for Android. This APK supports ARMv7 and AArch64 as well as x86 targets. (Provided: Beta0 and RC0)
    • NymphCast Player for Windows x64. Uses NSIS for the installer.
    • NymphCast Server:
    1. compiled on BCM2835 (RPi Zero) Raspberry Pi OS "Buster". Should run on RPi Zero/1 and up.
    2. compiled on BCM2837 (RPi 3B), "Bullseye". Should run on RPi 2 v1.2 and up.
  5. v0.1-beta0First Beta release for v0.1pre-release2021-12-13 · 2021-12-13 15:03 UTC
    查看更新说明

    This release contains the first Beta release for NymphCast. Repository development version will now shift to rc0 from beta0.

    Binaries are provided for:

    • Android (APK): NC Player client (ARMv7, AArch64 & x86).
    • Debian armhf (Raspberry Pi OS Buster & Bullseye): NC Server.

    See attached files. The BCM2835 marked archive should work on all Raspberry Pi systems with RPi OS Buster installed. For the other archives, the Bullseye image works on RPi 3 and likely higher, the Buster image at least on RPi 4, possibly RPi 3.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Repository Structure · Getting Started · Multi-Room Playback · Building From Source · Developer's Guide · SDK · License · Donate

    What is NymphCast?

    NymphCast is a software solution which turns your choice of hardware into an audio and video source for a television or (powered) speakers. It enables the streaming of audio and video over the network from a client device or media server, as well as the streaming of internet media to a NymphCast server, controlled by a client device, or directly on the receiver.

    In addition, the server supports NymphCast apps (currently in preview status) written in AngelScript to extend the overall NymphCast functionality with e.g. 3rd party audio / video streaming protocol support on the server side, and customisable UIs in the client application.

    NymphCast requires the use of 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 device:

    NymphCast diagram

    Client-side core functionality is provided through the NymphCast library.

    NymphCast Audio demo

    The following video demonstrates NymphCast (v0.1-RC1) in an audio setup with a Raspberry Pi 2B, USB WiFi dongle, Generic 2.1 speaker set and an Android phone.

    Usage Scenarios

    NymphCast can be used in a number of scenarios:

    • NymphCast Audio :arrow_right: Audio-only receiver mode.
    • NymphCast Video :arrow_right: Audio & Video receiver mode.
    • NymphCast ScreenSaver :arrow_right: Like NymphCast Video, but with image-based ScreenSaver when not playing content.
      • Profile: nymphcast_screensaver_config.ini
      • Setup guide
    • NymphCast GUI :arrow_right: Like NymphCast Video, but with stand-alone GUI mode (smart TV) enabled. (experimental feature)

    Network ports

    Note: NymphCast Server uses UDP port 4004 for discovery, and TCP port 4004 for playback.

    All of these ports have to be reachable on a system running NymphCast Server.

    Systems running the NymphCast MediaServer also need to have UDP & TCP ports 4005 reachable.

    Please ensure that these ports are whitelisted in e.g. firewall rules if applicable.

    Features & Status

    The currently stable version is v0.1, with v0.2 in development. The following list contains the major features that are in these versions, along with status notes.

    CategoryStatusDescriptionNotes
    File Streaming100%Streaming media files from client to server-
    Subtitles & streams75%Subtitle & stream selection supportSupports embedded bitmap (e.g. PGS) subtitles. Text & external subtitles will be added in v0.2.
    Multi-cast85%Synchronised multi-room playbackExperimental in v0.1, partially tested in v0.1-alpha0.
    MediaServer100%Streaming from NymphCast MediaServer instances-
    URL Streaming100%Streaming from URLs-
    Codec support100%Audio & Video codec supportSupports all codecs supported by ffmpeg.

    Experimental features:

    The following features are considered experimental and may become a stable feature in an upcoming release.

    CategoryStatusDescriptionNotes
    SmartTV75%Stand-alone GUI modeEmulationStation-based GUI has been integrated. Customisation and testing are in progress.
    Apps25%NymphCast AppsAngelScript-based apps. Implemented as CLI-based interface as well as an HTML-based GUI implementation.
    Local media25%Playback of local mediaBasic implementation exists in v0.2-alpha0, configured via INI file.

    NymphCast Ecosystem

    The NymphCast project consists out of multiple components:

    ComponentPurposeStatus
    NymphCast ServerReceiver end-point for clients. Connected to the display, speakers, etc..v0.1
    LibNymphCastLibrary for developing NymphCast clients with.v0.1
    NymphCast ClientCLI-based NymphCast client.v0.1
    NymphCast PlayerGraphical, Qt-based NymphCast client. SDK reference implementation.v0.1
    NymphCast MediaServerServer application for making media content available to NymphCast clients.v0.1

    NymphCast Player Client

    The NymphCast Player provides NymphCast client functionality in a graphical (Qt-based) format. It is also a demonstration platform for the NymphCast SDK (see details on the SDK later in this document). It is designed to run on any OS that is supported by the Qt framework.

    The player has been successfully compiled and used on the following platforms:

    • Windows (7, 10)
    • Linux (x86, ARM: Arch, Debian)
    • Android (8+)
    • FreeBSD (14.1)
    • Haiku (R1 Beta 5)

    Server Platforms

    The server should work on any platform that is supported by a C++17 toolchain and the LibPoco & ffmpeg (libAV) dependencies. This includes Windows, MacOS, Linux and BSD.

    FFmpeg and SDL2 libraries are used for audio and video playback. Both of which are supported on a wide variety of platforms, with Linux, MacOS and Windows being the primary platforms. System requirements also depend on whether only audio or also video playback is required. The latter can be disabled, which drops any graphical output requirement.

    Memory requirements depend on the NymphCast Server configuration: by default the ffmpeg library uses an internal 32 kB buffer, and the server itself a 20 MB buffer. The latter can be configured using the (required) configuration INI file, allowing it to be tweaked to fit the use case.

    Tested platforms:

    Video-capable*PlatformOSNotes
    Yesx86_64WindowsUsing MinGW or MSVC to compile.
    Yesx86_64LinuxStock install of Manjaro, Raspbian and Debian/Mint.
    Yesx86_64FreeBSDBoth FreeBSD 14.1-RELEASE and GhostBSD, compiled with clang++.
    Yesx86_64HaikuExisting bug in Haiku SDL (issue #6400) prevents full server functionality.
    YesRaspberry Pi 4RaspbianTested up to 1080p at 24 FPS (h.264). Note limited support for hardware-acceleration and currently no HEVC support.
    -Raspberry Pi 0/2/3RaspbianFfmpeg hardware accelerated video decoding appears not functional.
    -Odroid-C2Armbian, Ubuntu MateNo hardware accelerated video decoding present with ffmpeg.
    -Banana ProArmbianNo hardware accelerated video decoding present with ffmpeg.

    * The Video-capable column indicates whether the platform in the indicated configuration is capable of both audio & video playback (Yes), or just audio (-). Video output relies on hardware-accelerated video decoding support on the target platform.

    Client Platforms

    For the Qt-based NymphCast Player, a target platform needs to support LibPoco and have a C++ compiler which supports C++17 (<filesystem> header supported) or better, along with Qt5 support. Essentially, this means any mainstream desktop OS including Linux, Windows, BSD and MacOS should qualify, along with mobile platforms. Currently Android is also supported via Qt's mobile support, with iOS support planned.

    For the CLI-based NymphCast Client, only LibPoco and and C++17 support are required. All clients require the use of libnymphcast (see SDK section) as dependency.

    Note that all mobile platforms are a work in progress due to the limitations and peculiarities of these platforms.

    Getting Started

    To start using NymphCast, you need a device on which the server will be running (most likely an SBC or other Linux system). NymphCast is offered as binaries for selected distros, and as source code for use and development on a variety of platforms.

    Releases

    NymphCast releases are available on Github (see the 'Releases' folder).

    Some packages also exist for selected platforms.

    For FreeBSD and similar:

    • The server: nymphcast.
      • Install package with pkg install NymphCast.

    For Alpine Linux and PostmarketOS:

    Player client releases for Android and Windows:

    If pre-compiled releases for your target device or operating system are currently not listed above or on the releases page, you may need to build the server and client applications from source. See the Setup Guides listed under the Usage Scenarios section at the beginning of this document.

    Running NymphCast

    The server binary can be started with only the configuration flag specified. To start the server, execute the binary (from the bin/<platform>/ folder) to have it start listening on port 4004, with the appropriate configuration file (see Usage Scenarios for a list).

    E.g. for an audio-only configuration:

    ./nymphcast_server -c nymphcast_audio_config.ini.

    The server will listen on all network interfaces for incoming connections. It supports the following options:

    -h	--help				Get this help message.
    -c	--configuration		Path to the configuration file.
    -a	--apps				Path to the NymphCast apps folder.
    -w	--wallpaper			Path to the wallpapers folder.
    -r	--resources			Path to the GUI resources folder.
    -v	--version			Output NymphCast server version and exit.
    

    Server configuration

    In the configuration file supplied to the server, the following options are supported:

    LCDProc configuration

    NymphCast Server can output basic media file information (artist - title) to an LCDProc daemon on the system. To enable this, set to 1 the option enable_lcdproc in the active NymphCast Server configuration file (on Linux: /usr/local/etc/nymphcast/nymphcast_config.ini).

    After this restart the NymphCast server instance.

     

    The client binary supports the following flags:

    Usage:
            nymphcast_client <options>
    
    Options:
    -h      --help          Get this help message.
    -v      --version       Output the NymphCast client version and exit.
    -r      --remotes       Display online NymphCast receivers and quit.
    -f      --file          Name of file to stream to remote receiver.
    -i      --ip            IP address of the target NymphCast receiver.
    

    The NymphCast Player is a GUI-based application and accepts no command line options.

    Multi-Room Playback

    Using the NymphCast Player (NCP) client groups of servers can be added to a group. The Remotes dialogue window for this can be accessed either from the top menu or the button next to the Remotes drop-down menu.

    After creating a group, it will show up in the Remotes drop-down in the main window of NCP, and attempting to stream local media (or an NCMS share) to the group will automatically configure synchronised playback to all of the remotes in this group.

    Building From Source

    Note: This section is for building the project from source. Pre-built binaries are provided on the 'Releases' page.

    Server: Server building instructions

    Player: Player building instructions

    Developer's Guide

    The focus of the project is currently on the development of the NymphCast server and the protocol parts. Third parties are encouraged to contribute server-side app support of their services and developers in general to contribute to server- and client-side development.

    The current server and client documentation is hosted at the Nyanko website.

    Repository Structure

    The repository currently contains the NymphCast server, client SDK and NymphCast Player client sources.

    /
    |- player 	(the NymphCast demonstration client)
    |- src/
    |	|- client 		(basic CLI NymphCast client)
    |	|- server		(the NymphCast server and NymphCast app files)
    |- tools	(shell scripts for creating releases, in progress)
    

    SDK

    An SDK has been made available in the LibNymphCast repository. The player project under player/ uses the SDK as part of a Qt5 project to implement a NymphCast client which exposes all of the NymphCast features to the user.

    After compiling LibNymphCast, a client project has to link against this library file and include the nymphcast_client.h header file.

    License

    NymphCast is a fully open source project. The full, 3-clause BSD-licensed source code can be found at its project page on Github, along with binary releases.

    Donate

    NymphCast is fully free, but its development relies on your support. If you appreciate the project, your contribution, Ko-Fi or donation will help to support the continued development.