
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一台服务器。多个音频输出。搭配Music Assistant的全屋音频系统。
本项目允许您运行单个中央服务器(如NAS、树莓派或任何Docker主机),连接多个USB DAC或音频设备,在整个家庭中创建独立的音频区域。无需购买昂贵的多房间音频硬件,只需将经济实惠的USB DAC连接到中央机器,即可向每个房间流式传输同步音频。
┌─────────────────────────────────────────────────────────────────┐ │ 中央服务器 (Docker主机) │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 多房间音频容器 │ │ │ │ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ 播放器1 │ │ 播放器2 │ │ 播放器3 │ ... │ │ │ │ │ (厨房) │ │ (卧室) │ │ (露台) │ │ │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ └────────┼─────────────┼─────────────┼────────────────────┘ │ │ │ │ │ │ │ ┌────▼────┐ ┌────▼────┐ ┌────▼────┐ │ │ │USB DAC 1│ │USB DAC 2│ │声卡 │ │ │ └─────────┘ └─────────┘ └─────────┘ │ └─────────────────────────────────────────────────────────────────┘
!https://img.shields.io/badge/%E5%A4%9A%E6%88%BF%E9%97%B4-%E9%9F%B3%E9%A2%91%E6%8E%A7%E5%88%B6%E5%99%A8-blue?style=for-the-badge&logo=music !https://img.shields.io/badge/Docker-%E5%AE%B9%E5%99%A8%E5%8C%96-2496ED?style=for-the-badge&logo=docker !https://img.shields.io/badge/Music%20Assistant-%E5%85%BC%E5%AE%B9-green?style=for-the-badge !https://img.shields.io/badge/.NET-8.0-512BD4?style=for-the-badge&logo=dotnet !https://img.shields.io/badge/Sendspin-%E5%8E%9F%E7%94%9F%E6%94%AF%E6%8C%81-purple?style=for-the-badge
/api/health可直接部署的镜像地址:https://hub.docker.com/r/chrisuthe/squeezelitemultiroom
| 标签 | 描述 | 使用场景 |
|---|---|---|
latest | 最新稳定版本 | 生产环境部署 |
X.Y.Z | 版本标记发布 | 固定版本部署 |
sha-XXXXX | 提交特定构建 | 测试环境 |
bashdocker run -d \ --name multiroom-audio \ --network host \ -p 8096:8096 \ --device /dev/snd:/dev/snd \ -v audio_config:/app/config \ ***-ghcr.xuanyuan.run/chrisuthe/multiroom-audio:latest
通过 http://localhost:8096 访问Web界面
yamlservices: multiroom-audio: image: ***-ghcr.xuanyuan.run/chrisuthe/multiroom-audio:latest container_name: multiroom-audio restart: unless-stopped network_mode: host ports: - "8096:8096" devices: - /dev/snd:/dev/snd volumes: - ./config:/app/config - ./logs:/app/logs # - /etc/asound.conf:/etc/asound.conf:ro # 可选:自定义ALSA配置 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8096/api/health"] interval: 30s timeout: 10s retries: 3
使用上述Docker run命令或Docker Compose配置部署容器。
导航至 http://your-host-ip:8096
| 变量 | 默认值 | 描述 |
|---|---|---|
WEB_PORT | 8096 | Web界面端口 |
LOG_LEVEL | info | 日志详细程度(debug, info, warning, error) |
CONFIG_PATH | /app/config | 配置文件目录 |
LOG_PATH | /app/logs | 日志文件目录 |
yamlvolumes: - ./config:/app/config # 播放器配置文件 - ./logs:/app/logs # 应用程序日志 - /etc/asound.conf:/etc/asound.conf # 仅在需要访问软件定义设备时需要
yamldevices: - /dev/snd:/dev/snd # 所有音频设备(Linux系统)
如果您有自定义ALSA配置(虚拟设备、软件混音、多通道路由等),可挂载您的asound.conf文件使这些设备在容器内可用:
yamlvolumes: - ./config:/app/config - ./logs:/app/logs - /etc/asound.conf:/etc/asound.conf:ro # 自定义ALSA配置
这在以下场景中很有用:
容器重启后,您的自定义ALSA设备将出现在设备列表中。
完整API文档可在 http://localhost:8096/docs(Swagger UI)查看。
bash# 列出所有播放器 curl http://localhost:8096/api/players # 创建Sendspin播放器 curl -X POST http://localhost:8096/api/players \ -H "Content-Type: application/json" \ -d '{"name": "厨房", "device": "0"}' # 设置音量 curl -X PUT http://localhost:8096/api/players/厨房/volume \ -H "Content-Type: application/json" \ -d '{"volume": 75}' # 启动/停止播放器 curl -X POST http://localhost:8096/api/players/厨房/restart curl -X POST http://localhost:8096/api/players/厨房/stop # 健康检查 curl http://localhost:8096/api/health
Linux系统:确保音频设备可访问
bash# 检查可用设备 aplay -l # 验证设备权限 ls -la /dev/snd/
检查音频设备可用性:
bashdocker exec multiroom-audio ls /dev/snd
使用空设备测试:创建设备为null的播放器进行测试
查看日志:
bashdocker logs multiroom-audio
| 组件 | 技术 |
|---|---|
| 运行时 | .NET 8.0 / ASP.NET Core |
| 音频协议 | Sendspin via SendSpin.SDK 2.0 |
| 音频输出 | PortAudio via PortAudioSharp2 |
| 实时更新 | SignalR |
| 配置 | YAML via YamlDotNet |
| API文档 | Swagger/OpenAPI |
许可:MIT许可 - 详见LICENSE文件
致谢:
详细许可信息,请参见LICENSES.md。
本项目在AI(***的Claude)的协助下通过https://claude.ai/code%E5%BC%80%E5%8F%91%E3%80%82%E4%BA%BA%E7%B1%BB%E6%8F%90%E4%BE%9B%E6%8C%87%E5%AF%BC%E3%80%81%E5%AE%A1%E6%9F%A5%E8%BE%93%E5%87%BA%E5%B9%B6%E5%81%9A%E5%87%BA%E5%86%B3%E7%AD%96%EF%BC%8C%E4%BD%86%E5%AE%9E%E7%8E%B0%E8%BF%87%E7%A8%8B%E6%98%AFAI%E8%BE%85%E5%8A%A9%E7%9A%84%E3%80%82
将您的空间转变为互联音频体验
基于.NET 8.0为开源社区构建
https://img.shields.io/badge/Docker%20Hub-chrisuthe%2Fsqueezelitemultiroom-blue?style=flat-square&logo=docker](https://hub.docker.com/r/chrisuthe/squeezelitemultiroom) https://img.shields.io/badge/GitHub-%E6%BA%90%E4%BB%A3%E7%A0%81-black?style=flat-square&logo=github](https://github.com/chrisuthe/squeezelite-docker)
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务