前言¶
在 DSH 里做「能看、能听」的智能体,常见做法是把摄像头、浏览器或自建网关接到识别链路,再在会话里插话。若目标是用 muse_vtuber 统一承担取帧策略、VAD 断句、识图与说话,输入侧只需要稳定地把媒体变成 vtuber 采集口能吃的格式。旧方案(muse_galaxy_watch / muse_galaxy_bili_live 配合云网关、mediamtx、websockets)已与当前架构不兼容且代码已删除;muse_galaxy(维护者 Stella-Mira,分类:联网工具)是面向 muse_vtuber 的 DSH 采集器插件:把本地文件、网络资源与直播流解码成 JPEG 帧 + 16k 单声道 PCM,经 HTTP 推给 vtuber 的 capture 接口。识别与限流不在本插件,这里只负责取流与搬运。
这是什么¶
一句话:本插件是 muse_vtuber 的输入侧工具集。流水线大致为:
galaxy_path / galaxy_rtsp … ← 本插件
↓ yt-dlp(需要时)→ ffmpeg 解码
↓ POST /vtuber/api/capture/frame (JPEG,按 vtuber open 返回的 want.fps / want.width)
↓ POST /vtuber/api/capture/pcm (16k PCM,默认 200ms 一块)
muse_vtuber:MJPEG 面板 + vision.autoIntervalMs + mic.vad → ASR → 插话
插件版本在仓库 package.json 中为 2.0.0,许可证 MIT,运行时仅依赖 Node 内置模块(零 npm 依赖),本机需 ffmpeg;解析视频站点页面 URL 时需 yt-dlp(资料建议 python -m pip install yt-dlp)。
核心功能¶
暴露的工具¶
| 工具 | 说明 |
|---|---|
galaxy_path |
本地文件 / 直链 / 视频站点 URL(可先过 yt-dlp)。播完即停,不循环 |
galaxy_rtsp |
rtsp:// / rtmp:// / m3u8 / flv 等直播流,采到源断或调用 galaxy_stop |
galaxy_path_bilibili |
B 站视频(BV/av/URL),复用 mira_bilibili 登录态 |
galaxy_rtsp_bilibili |
B 站直播(短号/房间号/URL),断流自动换节点重连 |
galaxy_status |
当前或最近任务:帧数、丢帧、音频块、错误、用时 |
galaxy_stop |
停止一路;不传 streamId 则停止全部 |
调用 galaxy_path 等会立即返回 streamId(不阻塞播放);画面出现在 vtuber「形象」页签的「视频」卡片,后续识别由 vtuber 配置决定。
B 站分工¶
与 mira_bilibili、muse_vtuber 的典型分工如下:
mira_bilibili → 登录态 / 私信 / 弹幕 / 直播事件(后台)
muse_galaxy → 视频 URL、直播间号 → ffmpeg 可用的直链
muse_vtuber → 取帧识别 / 断句识别 / 说话
本插件不处理弹幕与私信;与 mira_bilibili 共享 mira_account 凭据,「看画面」与「回弹幕/私信」是两条独立通道。
视频(P1)¶
示例:galaxy_path_bilibili BV1xx411c7mD
- 从
~/.dsh/mira_config/mira_account/creds/<accountId>.json读取fields.{SESSDATA,bili_jct,buvid3,buvid4}; - 写成 Netscape 格式的临时
cookies.txt(权限 600,解析完立刻删除); - 对 DASH 分别用
yt-dlp -g取音视频直链,交给两个 ffmpeg 解码。
站点视频(含 B 站/YouTube)音视频分离时,需两次 yt-dlp:视频 -f 'bv*'(退 'b'),音频 -f 'ba'(退 'b');只取 -g 第一行会得到无声音的视频轨。
直播(P2)¶
示例:galaxy_rtsp_bilibili 12345678
room_init解析真实room_id与live_status;getRoomPlayInfo取候选流,avc 优先、hevc 垫底;- 开播前按真实解码管线各探测约 2.5 秒,选能出帧的节点;
- 断流后按退避换候选节点,候选用尽则重新解析,次数受
bili.maxReconnects限制。
资料中强调:直播 Referer 需为 https://live.bilibili.com/<房间号>(房间号可从流地址 cid= 取);探测须与真实解码管线一致,仅用 -f null 短探测可能误判坏节点。
配置项(节选)¶
| 键 | 默认 | 说明 |
|---|---|---|
enabled |
true |
为 false 时不注册工具 |
vtuber.baseUrl |
http://127.0.0.1:3080 |
muse_vtuber 地址 |
vtuber.tokenFile |
"" |
留空则用 $DSH_HOME/mira_config/muse_vtuber/capture.json(由 vtuber 生成) |
bili.accountId |
bili-main |
使用的账号凭据 id |
bili.maxReconnects |
8 |
B 站直播断流最大重连次数 |
bili.reconnectDelayMs |
800 |
重连退避基数 |
bili.probeCandidates |
6 |
开播前探测候选数 |
media.ffmpeg / media.ytdlp |
ffmpeg / yt-dlp |
可改为绝对路径或带参数形式 |
media.sampleRate |
16000 |
与 vtuber mic.sampleRate 一致 |
media.chunkMs |
200 |
PCM 分块 |
maxSeconds |
3600 |
单路时长硬上限(防直播忘关;path 播完不受影响) |
通用 galaxy_rtsp 不做断流重连;重连逻辑仅在 galaxy_rtsp_bilibili。
安装与启用¶
已抓取 README 未给出 DSH 官方 dsh plugin add … 安装命令,此处不凭仓库名拼接命令。安装与更新请以社区目录页说明为准:
- 目录页:https://www.skillhub.cn/plugins/Stella-Mira/muse_galaxy
- 源码与文档:https://github.com/Stella-Mira/muse_galaxy
启用前请确认本机已安装 ffmpeg(必需)及按需安装的 yt-dlp;插件以当前 dsh 进程权限运行,安装前应自行审阅源码与 MIT 许可证。
典型用法¶
前置条件¶
- muse_vtuber 的
GET /vtuber/api/health中features.capture需齐全(open/frame/pcm/close/ping/stream);采集令牌由 vtuber 生成。 - 调用
capture/open属于「接收」,会话需为 observer 或 taker。在 DSH 会话内调用galaxy_path/galaxy_rtsp会带上sessionId;首次观看时 vtuber 可通过security.autoObserve登记为 observer。无sessionId直接调采集口会收到403 authz/no-session。
可复现示例¶
B 站点播(需已配置 mira_account 与 bili.accountId):
galaxy_path_bilibili BV1xx411c7mD
B 站直播(含断流换节点):
galaxy_rtsp_bilibili 12345678
通用资源(本地、直链或需 yt-dlp 的站点 URL):
galaxy_path /path/to/file.mp4
galaxy_rtsp rtsp://…
查看状态或停止:
galaxy_status
galaxy_stop
galaxy_stop <streamId>
仓库自检脚本¶
在正在运行的 dsh web 环境下,可对采集口做真解码自检(须带会话身份,避免 vtuber 403):
node test/live-path.mjs --session session-galaxy-selftest
node test/latency.mjs
后者可用环境变量 DSH_SESSION_ID 提供会话身份。资料注明:在受限沙箱中 ffmpeg 管道可能 spawn EPERM,需在不受限 shell 中运行。
适用场景与注意¶
适合:已在用 muse_vtuber 做虚拟形象感知与表达,需要从文件、直链、通用直播或 B 站 视频/直播向 vtuber 持续送帧与 PCM,且希望 B 站直播侧由插件处理 CDN 节点探测与断流重连的场景。
注意:
- 画面与声音各起一个 ffmpeg,实现简单但占用约 1–2 核;帧队列深度 32,满则丢最旧帧以保「尽量新」的画面。
- 不做识图/VAD 策略,这些均在 vtuber 侧配置。
- 与旧 galaxy 云网关方案不兼容;消费者仅为 muse_vtuber。
DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
muse_galaxy 把媒体解码与 HTTP 推送收敛到 DSH 工具层,让 vtuber 专注识别与对话。进一步说明与配置见 SkillHub 目录页 与 GitHub 仓库 README。