Event Flow 媒體檔案

在 OBS 中使用自己的聲音、圖片、GIF 和影片。

簡短解答

Social Stream 桌面應用程式可以播放獲准的本機檔案,無需上傳。 使用 選擇本機檔案 ,在 Event Flow 中操作,然後複製產生的 本機 Flow Actions URL 到 OBS 中。

Chrome 擴充功能本身無法提供磁碟上的檔案。除非同時執行支援的桌面配套程式,否則擴充功能使用者應繼續使用「上傳」或託管媒體 URL。

選擇最合適的方式

最快 內建上傳

最適合規模適中的媒體庫,設定最少。

大型或共用媒體庫 雲端物件儲存

最適合大量媒體、備份和多台電腦使用。

1Event Flow

獎勵或訊息觸發動作。

2Flow Actions

actions.html 接收動作。

3媒體 URL

OBS 載入聲音、圖片、GIF 或影片。

方案 1:使用內建上傳

  1. 在 Event Flow 中選擇 播放音訊片段 或 顯示媒體疊加畫面.
  2. 點選 上傳,選擇檔案,並在開啟的頁面中完成上傳。
  3. 確認傳回的 https://fileuploads.socialstream.ninja/media/... URL 出現在動作中。
  4. 儲存流程,並保持 actions.html?session=YOUR_SESSION 在 OBS 中保持開啟。

如果上傳網站顯示帳號額度為 1 GB,且你的媒體庫將超過此額度,請使用下方的本機資料夾或雲端儲存選項。

Event Flow 的「顯示媒體疊加畫面」屬性,顯示媒體 URL 欄位和上傳按鈕
「上傳」按鈕會建立託管 URL。它不是用於 Event Flow 播放的本機檔案選擇器。

方案 2:將媒體庫保留在 OBS 電腦上

獨立桌面應用程式包含本機媒體庫,以及僅監聽本機的回送伺服器。Event Flow 儲存穩定的媒體 ID,而不會將磁碟路徑寫入流程。

  1. 啟動 Social Stream 獨立應用程式並開啟 Event Flow。
  2. 選擇 播放音訊片段 或 顯示媒體疊加畫面.
  3. 點選 選擇本機檔案 並選擇音訊、圖片、GIF 或影片檔案。
  4. 確認動作顯示檔案可用,且本機伺服器正在執行。
  5. 點選 複製用於 OBS 的本機 Flow Actions URL.
  6. 將該 URL 貼到 OBS 瀏覽器來源,儲存流程並測試動作。
  • 使用 預覽 檢查所選檔案。
  • 如果檔案被移動或重新命名,Event Flow 會顯示它遺失。點選 重新連結 並選擇新位置;現有流程會繼續運作。
  • 使用 在資料夾中顯示 ,用於尋找原始檔案。
  • OBS 使用本機 Flow Actions URL 時,保持 SSApp 執行。
  • 不要分享產生的 URL。其中包含用於保護本機伺服器的私人隨機存取憑證。

使用產生的本機 Flow Actions URL。 託管的 https://socialstream.ninja/actions.html 頁面無法解析桌面媒體庫 ID。

進階備用方案:執行自己的本機伺服器

如果不使用 SSApp 管理的本機媒體庫,仍可採用下列手動設定。

下載並解壓縮 Social Stream Ninja 原始碼資料夾,然後建立一個 user-media 資料夾,放在其中。

C:\SSN\social_stream\
  actions.html
  user-media\
    audio\booty.mp3
    images\reward.png
    video\celebration.mp4

手動啟動本機 HTTP 伺服器

  1. 如果尚未安裝 Python,請先安裝。
  2. 開啟 PowerShell 或命令提示字元,執行此指令。直播期間保持視窗開啟。

Windows 指令

py -m http.server 8765 --bind 127.0.0.1 --directory "C:\SSN\social_stream"

macOS 或 Linux 指令

python3 -m http.server 8765 --bind 127.0.0.1 --directory "/path/to/social_stream"

用於 OBS 瀏覽器來源的 Flow Actions URL

http://127.0.0.1:8765/actions.html?session=YOUR_SESSION_ID

要貼到 Event Flow 的媒體 URL

http://127.0.0.1:8765/user-media/audio/booty.mp3
http://127.0.0.1:8765/user-media/images/reward.png
http://127.0.0.1:8765/user-media/video/celebration.mp4
OBS 瀏覽器來源
127.0.0.1:8765/actions.html
本機媒體
127.0.0.1:8765/user-media/...

此設定 --bind 127.0.0.1 將伺服器限制為本機存取。此簡易伺服器用於本機直播,不用於在公開網際網路上託管內容。

file://:可用,但更容易出問題

如果不想執行本機伺服器,可讓 OBS 使用本機 Flow Actions 頁面,同時使用本機媒體 URL:

file:///C:/SSN/social_stream/actions.html?session=YOUR_SESSION_ID
file:///C:/SSN/social_stream/user-media/audio/booty.mp3
  • 使用正斜線,並避免在資料夾和檔名中使用空格或特殊字元。
  • Flow Actions 頁面和媒體都必須在本機。託管的 actions.html 頁面無法讀取該路徑。
  • 如果 OBS 拒絕本機檔案,請使用上方的本機 HTTP 伺服器方法。

Chrome 擴充功能怎麼辦?

擴充功能使用相同的 Event Flow 格式,因此桌面端建立的流程仍然相容。本機動作儲存的是不透明媒體 ID,而不是 Windows、macOS 或 Linux 路徑。

擴充功能本身無法將磁碟上的任意檔案提供給 OBS。沒有支援的配套橋接程式時,請使用 上傳 或普通託管 URL。如果匯入的流程參照本機媒體,擴充功能會說明需要桌面應用程式或橋接程式,不會無聲地失敗。

方案 3:線上託管更大的媒體庫

提供者適合重要說明
Cloudflare R2 公開提醒媒體庫的首選通用方案。 標準儲存目前每月包含 10 GB-month 的儲存用量和免費網際網路對外流量。正式環境請使用自訂網域; r2.dev 有速率限制,且僅用於開發。
Backblaze B2 低成本的 S3 相容儲存,提供公開檔案 URL。 目前前 10 GB 免費;超過包含額度後,儲存和額外對外流量需要付費。
Amazon S3 或其他相容於 S3 的託管服務 已有雲端帳號和進階存取控制。 為媒體啟用公開讀取,設定正確的內容類型,並在瀏覽器請求需要時新增唯讀 CORS 規則。
GitHub 少量小型公開檔案,或偶爾下載發佈資源。 普通儲存庫不接受超過 100 MiB 的檔案,GitHub Pages 網站的已發佈站點大小上限為 1 GB。Releases 允許更大的資源,但不便用作受管理的提醒媒體庫。

公開就意味著任何人可存取。 任何持有物件 URL 的人都能存取媒體。不要上傳不應分享的私人、受授權限制或個人檔案。

Cloudflare R2 設定

  1. 建立 R2 儲存貯體,使用 標準 儲存類別。
  2. 上傳媒體時使用清楚的資料夾名稱,例如 audio/, images/,以及 video/.
  3. 在儲存貯體設定中啟用公開存取。公開開發 URL 僅用於測試;一般直播請連接自訂網域。
  4. 在隱私/無痕瀏覽視窗中開啟物件 URL。它應直接載入檔案,無需登入或經過分享頁面。
  5. 將該直接 HTTPS URL 貼到 Event Flow 動作中。

普通圖片和音訊通常無需自訂 CORS 設定即可載入。如果自訂疊加畫面、字型、影片播放器或瀏覽器 fetch 回報 CORS 錯誤,請開啟 儲存貯體 → 設定 → CORS 原則 並新增唯讀原則:

[
  {
    "AllowedOrigins": [
      "https://socialstream.ninja",
      "http://127.0.0.1:8765"
    ],
    "AllowedMethods": ["GET", "HEAD"],
    "AllowedHeaders": ["Range"],
    "ExposeHeaders": [
      "Content-Length",
      "Content-Range",
      "Accept-Ranges"
    ],
    "MaxAgeSeconds": 3600
  }
]

新增其他會取得檔案的頁面的準確來源位址。來源位址不包含路徑或結尾斜線。如果自訂網域在新增 CORS 前已有快取,請清除此主機名稱的快取。

官方參考: 公開 R2 儲存貯體, R2 CORS,以及 R2 價格.

Backblaze B2 CORS 範例

將儲存貯體設為公開,使用直接檔案 URL;如果瀏覽器回報 CORS 錯誤,請套用僅允許下載的規則:

[
  {
    "corsRuleName": "allowSSNMedia",
    "allowedOrigins": ["https://socialstream.ninja"],
    "allowedHeaders": ["range"],
    "allowedOperations": ["b2_download_file_by_name"],
    "exposeHeaders": [
      "content-length",
      "content-range",
      "accept-ranges"
    ],
    "maxAgeSeconds": 3600
  }
]

參閱 Backblaze 的 官方 CORS 規則參考.

正式開播前

  1. 在隱私/無痕視窗中開啟準確的媒體 URL。它必須直接載入檔案。
  2. 使用 圖片 用於 PNG、JPG、WebP 或 GIF 媒體。使用 影片/嵌入 用於影片或嵌入 URL。
  3. 為確保相容性,音訊優先使用 MP3,圖片使用 PNG/WebP/GIF,影片使用 H.264/AAC MP4。
  4. 在 OBS 中開啟 Flow Actions 頁面,使用與 Event Flow 相同的工作階段 ID。
  5. 使用 Event Flow 測試面板,然後在正式直播前重新整理 OBS 瀏覽器來源一次。
  • URL 觸發下載而不是播放: 託管服務傳送了錯誤的內容類型或僅供下載的回應。
  • 雲端檔案被阻止: 將其設為公開,並檢查 CORS 來源位址、方法和回應標頭。
  • 本機檔案遺失: 在 SSApp 中開啟動作並使用 重新連結.
  • 本機伺服器離線: 啟動 SSApp;如果連接埠或安全權杖已變更,請重新複製本機 Flow Actions URL。
  • 託管的 Flow Actions 無法播放本機項目: 將 OBS URL 取代為 SSApp 產生的 URL。
  • OBS 沒有收到內容: 確認 Flow Actions URL 和 Event Flow 使用相同的工作階段 ID。