Repository navigation
Broadcast System
独立服务端是WinJACKNexus远程音频功能的公共后端,目前已实现广播发布与转发。后续计划扩展其他涉及远程音频的功能,这些能力尚未实现,不作为当前可用功能宣传。当前可执行文件名仍为bc-server。
客户端是Windows/JACK-only节点,服务端则是独立Rust程序,可脱离WinJACKNexus、Qt、JACK及音频设备运行。独立 Build standalone broadcast server Action提供Windows x64、Linux x64、Linux ARM64构建;以实际Actions运行确认各平台结果。新工作流需先进入默认分支,才可从Actions页面手动触发。
- 添加
nodes/lan_remote_audio/中的Broadcast Sender节点并打开独立窗口。 - 建立分类或多级子分类,添加Mono、Stereo、5.1或7.1流,设置名称。
- 将要广播的源连接到该流输入。每条流有同布局的本地监听输出,Listen默认关闭。
- 填写全局服务器地址、发布者ID、Token,保存服务器后显式开始推流。所有广播窗口共用一组连接配置,Token仅存Windows Credential Manager,不写工程。
- 每轨只有一个总体峰值电平表;增益平滑作用一次,M静音广播及监听,S仅影响本节点监听。关闭窗口不停止处理或推流。
- 选择流、完整流
all或分声道以及WAV/Opus,复制匿名收听地址。
下载对应平台的服务端程序,将server.example.json复制为server.json,在同目录放入自己的UTF-8 publish.token。服务器无需Python、Qt或JACK。
{
"bind": "127.0.0.1:9443",
"udp_bind": "0.0.0.0:9444",
"publish_token_file": "publish.token",
"tls_cert": null,
"tls_key": null,
"insecure_loopback": false
}Linux启动:
./bc-server --config ./server.jsonWindows启动:
& ./bc-server.exe --config ./server.json所有原有启动参数均可写入JSON。显式命令行参数优先覆盖配置,不受参数顺序影响;JSON中的文件路径按配置文件目录解析,CLI中的文件路径仍按启动目录解析。publish_token_file必填,JSON未知字段、CLI重复参数和缺失值均报错。
未指定时,HTTP和UDP绑定分别为0.0.0.0:9443和0.0.0.0:9444。旧--insecure-loopback开发开关仍只允许回环绑定,也可用true/false显式覆盖JSON值。普通无证书HTTP/WS模式不需要这个开发开关。
- 证书和私钥都省略或为null:服务端提供HTTP/WS,适合作为NGINX后端。
- 同时配置
tls_cert和tls_key:服务端直接提供HTTPS/WSS。 - 只配置一个,或提供了无效证书文件:启动失败,不静默退回HTTP。
NGINX终止外部TLS时,客户端仍连接公开的https://stream.example.com/bc。将服务端随包nginx.example.conf的map/server块适配到现有NGINX http配置,修改域名及NGINX已有证书路径。该示例保留/bc/路径、转发WebSocket Upgrade,并关闭实时音频响应缓冲。
UDP 9444必须独立到达与控制连接相同的公网主机,不能通过HTTP反代转发。 同机部署时NGINX监听TCP 443,relay监听本机TCP 9443和对外UDP 9444;NGINX异机时另配UDP转发。当前UDP负载由会话鉴权和HMAC保护完整性,并未被TLS加密。TLS只保护HTTPS收听和WSS控制链路。
NGINX官方说明:WebSocket代理、响应缓冲。本次未运行实际NGINX部署验收。
https://stream.example.com/bc/listen?publisher=station&stream=流UUID&channel=all&format=opus
publisher、stream必填;channel默认all,可选当前布局中的M或L/R/C/LFE/Ls/Rs/Lrb/Rrb;format默认opus,也可为wav。响应分别为audio/ogg; codecs=opus或audio/wav,不是JSON或自定义网页。听众不需要Token;只有发布控制需要Bearer鉴权。服务端不解码、编码或重采样。
标准播放器或独立bc-listen均可使用该URL。浏览器直接打开时显示原生播放控件是兼容目标;浏览器人工播放、人工听音/安装及真实JACK/环绕声硬件验收未记为通过。
远程音频节点统一归类为 LAN & Remote Audio,安装目录为 nodes/lan_remote_audio/。旧工程中的 nodes/bc/mod_broadcast.dll 在新模块存在时自动迁移;覆盖安装遗留的旧模块不重复列出。网络端点继续使用 /bc。