1. 將 Flow Actions 連接至 OBS
OBS WebSocket v5 內建於 OBS 28 及更新版本。Social Stream Ninja 使用它進行完整的 OBS 控制並接收媒體事件。
- 在 OBS 中,開啟 工具 → WebSocket 伺服器設定(Tools → WebSocket Server Settings).
- 啟用 WebSocket 伺服器。保留預設連接埠
4455;如果需要,可設定密碼。 - 在 Social Stream Ninja 中,開啟 Flow Actions 區段,並設定 OBS WebSocket URL 和可選密碼。
- 複製 Flow Actions URL 並保持開啟。對於疊加畫面/音訊動作,建議使用 OBS 瀏覽器來源。
- 使用 OBS WebSocket 測試器 在建立流程之前確認連接。
https://socialstream.ninja/actions.html?session=YOUR_SESSION&obsws=ws://127.0.0.1:4455新增
&obspw=YOUR_PASSWORD 僅當 OBS 要求驗證時。加入 &obsdebug=1 在診斷問題時顯示小型連接狀態徽章。
兩種 OBS 連接模式
| 模式 | 支援內容 | 需求 |
|---|---|---|
| OBS WebSocket v5 | 本指南中的每個觸發條件和動作。 | OBS 28+、已啟用 WebSocket 伺服器、Flow Actions 頁面已開啟。 |
| OBS 瀏覽器來源 API | 用於場景切換、開始/停止直播、開始/停止錄製和儲存重播緩衝區的備援方式。 | 以 Advanced Access Level 載入於 OBS 內的 Flow Actions。來源、濾鏡、文字、音量、媒體、重新整理和媒體結束功能仍需要 WebSocket。 |
2. 向流程新增 OBS 節點
- 開啟 Event Flow 編輯器 並建立或編輯流程。
- 將觸發條件拖到畫布上。
- 展開 OBS Studio 在 Actions 清單中,並拖入所需的 OBS 動作。
- 將觸發條件連接至動作,設定精確的 OBS 場景/來源名稱,儲存並啟用流程。
3. OBS 觸發條件
OBS 回報相符事件時,這些觸發條件會啟動流程。它們以下列形式抵達: type: "obs";OBS 專屬詳細資訊位於 meta.
| 觸發器 | 觸發時機 | 實用資料 |
|---|---|---|
| OBS 直播開始(OBS Stream Started) | 直播達到啟動狀態。 | meta.outputState, meta.outputActive |
| OBS 直播停止(OBS Stream Stopped) | 直播達到停止狀態。 | meta.outputState, meta.outputActive |
| OBS 錄製開始(OBS Recording Started) | 錄製開始。 | meta.outputState |
| OBS 錄製停止(OBS Recording Stopped) | 錄製停止。 | meta.outputState |
| OBS 場景已變更(OBS Scene Changed) | 目前節目場景發生變化。 | meta.sceneName |
| OBS 媒體結束(OBS Media Ended) WebSocket | 媒體輸入完成播放。可依精確的 Media Source Name 進行篩選。 | meta.inputName, meta.inputUuid |
| OBS 重播緩衝區已儲存(OBS Replay Buffer Saved) | OBS 完成儲存重播。 | meta.savedReplayPath |
4. OBS 動作
| 操作 | 設定和行為 | 連接 |
|---|---|---|
| 切換場景(Change Scene) | 依精確的場景名稱切換目前節目場景。 | WebSocket 或瀏覽器來源 API 備援方式 |
| 切換來源(Toggle Source) | 顯示、隱藏或切換場景項目。Scene 和 Group 是可選的目標欄位。 | WebSocket |
| 設定文字來源(Set Text Source) | 使用範本預留位置更新 Text (GDI+) 或 Text (FreeType 2)。 | WebSocket |
| 控制媒體來源(Control Media Source) | 播放/繼續、暫停、重新開始、停止、下一個或上一個。 | WebSocket |
| 設定來源音量(Set Source Volume) | 將輸入設定為從 -100 為 +26 dB. | WebSocket |
| 重新整理瀏覽器來源(Refresh Browser Source) | 重新載入瀏覽器來源,不使用快取。 | WebSocket |
| 切換濾鏡(Toggle Filter) | 啟用、停用或切換指定名稱的來源濾鏡。 | WebSocket |
| 靜音/取消音訊靜音(Mute/Unmute Audio) | 將輸入靜音、取消靜音或切換靜音。 | WebSocket |
| 開始錄製(Start Recording) | 開始 OBS 錄製。 | WebSocket 或瀏覽器來源 API 備援方式 |
| 停止錄製(Stop Recording) | 停止 OBS 錄製。 | WebSocket 或瀏覽器來源 API 備援方式 |
| 開始直播(Start Streaming) | 啟動已設定的 OBS 直播輸出。 | WebSocket 或瀏覽器來源 API 備援方式 |
| 停止直播(Stop Streaming) | 停止 OBS 直播輸出。 | WebSocket 或瀏覽器來源 API 備援方式 |
| 控制重播緩衝區(Control Replay Buffer) | 啟動、停止或切換重播緩衝區。 | WebSocket |
| 儲存重播緩衝區(Save Replay Buffer) | 儲存目前正在執行的重播緩衝區。 | WebSocket 或瀏覽器來源 API 備援方式 |
Set Text Source 和流程變數
文字欄位支援一般訊息預留位置,例如 {username}, {message}, {source},以及 {donation},以及前面流程節點加入的值,例如 {counterValue}, {counterTarget},以及 {counterRemaining}.
{username}: now {counterValue}, need {counterTarget}
媒體來源控制項
播放 / 暫停(Play / Pause)
播放(Play) 繼續播放暫停的媒體。 暫停(Pause) 保持目前位置。
重新開始 / 停止(Restart / Stop)
重新開始(Restart) 從頭開始。 停止(Stop) 結束播放並重設輸入。
下一個 / 上一個(Next / Previous)
在支援播放清單的輸入(例如 VLC Video Source)中移動。單一檔案的 Media Source 可能忽略這些動作。
音量、靜音和濾鏡
設定來源音量(Set Source Volume) 使用 dB,與 OBS 混音器刻度一致: 0 dB 表示增益不變,負值更安靜,而 -100 dB 實際相當於靜音。Mute 是單獨的狀態。Toggle Filter 僅變更現有濾鏡的啟用狀態,不會編輯濾鏡設定。
重播緩衝區
首先在以下位置啟用重播緩衝區: OBS 設定 → 輸出(Settings → Output)。使用 控制重播緩衝區(Control Replay Buffer) 以啟動/停止它,然後 儲存重播緩衝區(Save Replay Buffer) 將最近緩衝的片段寫入磁碟。
5. 實用方案
OBS 直播期間每小時傳送訊息
在 Event Flow 編輯器中,選擇 從範本開始 → 中階 → OBS 直播期間每小時傳送訊息(Start with a template → Intermediate → Hourly message while OBS is live)。它初始為停用狀態,在一個流程中包含三個分支:
- OBS Stream Started → Set Gate State: ON
- Time Interval (3600 seconds) → ON/OFF Switch → Send Message
- OBS Stream Stopped → Set Gate State: OFF
兩個 Set Gate State 動作已經指向同一個開關,其預設值為 OFF。編輯 傳送訊息(Send Message) 以選擇聊天平台(範例使用 Twitch)和訊息。選擇某個平台或 All Platforms;Reply to Source 無法回覆 OBS 事件或計時器觸發。
將 Flow Actions 連接至 OBS,保持 Social Stream 和目標聊天連接,然後儲存並啟用流程 在開始直播之前。開關會等待 OBS 開始事件;在直播已經進行時載入它不會將其設為 ON。重新啟動 Social Stream 也會將開關重設為 OFF。
時序: 間隔依自己的排程執行,因此第一次提醒可能在開播後一小時以內抵達。之後,當開關為 ON 時,提醒每小時重複。變更 Time Interval 值可調整頻率;單位為秒。
OBS 中的計數器文字
放置 設定文字來源(Set Text Source) 放在計數器/檢查路徑之後,並使用:
{username}: now {counterValue}, need {counterTarget}
影片結束後執行某項動作
OBS 媒體結束(OBS Media Ended) (篩選為 Intro Video) → 切換場景(Change Scene) 為 Main.
由聊天控制的媒體重新啟動
訊息等於(Message Equals) !replayintro → 權限條件 → 控制媒體來源:重新開始(Control Media Source: Restart).
重新整理提醒頁面
訊息等於(Message Equals) !refreshalerts → 管理員條件 → 重新整理瀏覽器來源(Refresh Browser Source).
提醒期間降低音樂音量
設定來源音量(Set Source Volume) 為 -24 dB → 提醒動作 → Delay → 還原為 0 dB.
重播工作流程
OBS 直播開始(OBS Stream Started) → 控制重播緩衝區:開始(Control Replay Buffer: Start);另一個可信命令執行 儲存重播緩衝區(Save Replay Buffer).
6. 其他內建 OBS 控制項
Social Stream Ninja 在 Streaming Chat 停駐面板中也有舊版 OBS 瀏覽器來源控制項。這些控制項不使用 Flow Actions WebSocket 橋接。
| 選項 | 功能 | 需求 |
|---|---|---|
| 目前 OBS 場景指示器 | 在 Streaming Chat 停駐面板中顯示目前場景。 | 以讀取權限載入於 OBS 內的停駐面板。 |
| 訪客可以使用 !cycle | 循環切換至下一個 OBS 場景,頻率限制為每 10 秒一次。 | 啟用彈出視窗選項;停駐面板以 Advanced 權限載入於 OBS 內。 |
| 具權限的使用者可以使用 !start / !stop | 由可信聊天使用者啟動或停止直播。 | 啟用彈出視窗選項;停駐面板以 Full/Advanced 控制權限載入於 OBS 內。 |
| 遠端 OBS 控制面板 | 當目標 OBS 停駐面板授予所需控制層級時,顯示場景,並可切換場景或切換直播/錄製。 | 與 OBS 內執行的停駐面板配對的 Streaming Chat 停駐面板。 |
| OBS WebSocket 測試器 | 在使用 Event Flow 之前檢查版本、連接、場景和個別請求。 | 開啟測試器 |
7. 疑難排解
| 問題 | 檢查 |
|---|---|
| 沒有任何反應 | 流程已儲存並啟用;Flow Actions 已開啟;兩者使用相同的工作階段 ID。 |
| OBS 無法連接 | WebSocket 伺服器已啟用,URL 為 ws://127.0.0.1:4455,並且密碼相符。連接埠 4444 是已過時的 v4 預設值。 |
| 找不到場景/來源/濾鏡 | 複製精確的 OBS 名稱。對於可見性,如果項目巢狀放置或不在目前場景中,請設定 Scene or Group。 |
| 文字沒有變化 | 使用 Text (GDI+) 或 Text (FreeType 2),確認輸入名稱,並停用 從檔案讀取(Read from file). |
| Media Ended 從不觸發 | 使用 OBS WebSocket v5 和真實媒體輸入。循環媒體不會達到結束狀態。 |
| Next/Previous 沒有效果 | 使用支援播放清單的來源,例如 VLC Video Source。 |
| 儲存重播失敗 | 在 OBS 輸出設定中啟用重播緩衝區,並在儲存前啟動它。 |
| 場景變化時動作停止 | 停用 不可見時關閉來源(Shutdown source when not visible) 在 Flow Actions 瀏覽器來源上,或在其他位置保持頁面開啟。 |
GetVersion → 確認場景/輸入 → 測試個別請求 → 測試完整 Event Flow。