前言¶
在 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。