ควบคุม OBS ด้วย Social Stream Ninja

ควบคุม OBS จาก Event Flow โดยตรง ไม่ต้องใช้ Streamer.bot คู่มือนี้ครอบคลุมการตั้งค่า ทริกเกอร์และแอ็กชัน OBS ทุกรายการ ตัวอย่างใช้งานจริง และตัวควบคุมแผงด็อก/แหล่งเบราว์เซอร์แบบเดิม

ไทย

1. เชื่อมต่อ Flow Actions กับ OBS

OBS WebSocket v5 มีใน OBS 28 และใหม่กว่า Social Stream Ninja ใช้เพื่อควบคุม OBS เต็มรูปแบบและรับเหตุการณ์สื่อ

  1. ใน OBS เปิด Tools → WebSocket Server Settings.
  2. เปิดเซิร์ฟเวอร์ WebSocket ใช้พอร์ตเริ่มต้น 4455 ตั้งรหัสผ่านหากต้องการ
  3. ใน Social Stream Ninja เปิด Flow Actions แล้วตั้ง URL ของ OBS WebSocket และรหัสผ่านหากมี
  4. คัดลอก URL ของ Flow Actions และเปิดค้างไว้ แนะนำให้ใช้แหล่งเบราว์เซอร์ OBS สำหรับแอ็กชันโอเวอร์เลย์/เสียง
  5. ใช้ เครื่องมือทดสอบ OBS WebSocket เพื่อยืนยันการเชื่อมต่อก่อนสร้างโฟลว์
ตัวอย่าง URL โดยตรง
https://socialstream.ninja/actions.html?session=YOUR_SESSION&obsws=ws://127.0.0.1:4455

เพิ่ม &obspw=YOUR_PASSWORD เฉพาะเมื่อ OBS ต้องยืนยันตัวตน เพิ่ม &obsdebug=1 เพื่อแสดงป้ายสถานะการเชื่อมต่อเล็ก ๆ ขณะวินิจฉัยปัญหา
เปิดหน้า Flow Actions ให้ทำงานค้างไว้ นี่คือบริดจ์ที่รับแอ็กชันจาก Event Flow และส่งคำขอ OBS WebSocket หากใช้เป็นแหล่งเบราว์เซอร์ OBS ให้ปิด ปิดแหล่งข้อมูลเมื่อมองไม่เห็น (Shutdown source when not visible) เมื่อแหล่งข้อมูลต้องควบคุม OBS ต่อแม้ซ่อนอยู่
เหตุการณ์แชต / สตรีม │ ▼ Social Stream Ninja Event Flow │ รหัสเซสชันเดียวกัน ▼ หน้า Flow Actions (actions.html) │ OBS WebSocket v5 · ws://127.0.0.1:4455 ▼ OBS Studio

โหมดเชื่อมต่อ OBS สองแบบ

โหมดรองรับอะไรข้อกำหนด
OBS WebSocket v5ทริกเกอร์และแอ็กชันทุกรายการในคู่มือนี้OBS 28 ขึ้นไป เปิดเซิร์ฟเวอร์ WebSocket และเปิดหน้า Flow Actions
OBS Browser Source APIตัวสำรองสำหรับเปลี่ยนฉาก เริ่ม/หยุดสตรีม เริ่ม/หยุดบันทึก และบันทึกรีเพลย์บัฟเฟอร์Flow Actions ที่โหลดภายใน OBS พร้อม Advanced Access Level ฟีเจอร์แหล่งข้อมูล ฟิลเตอร์ ข้อความ ระดับเสียง สื่อ รีเฟรช และสื่อเล่นจบ ยังต้องใช้ WebSocket

2. เพิ่มโหนด OBS ในโฟลว์

  1. เปิด ตัวแก้ไข Event Flow แล้วสร้างหรือแก้ไขโฟลว์
  2. ลากทริกเกอร์ลงบนแคนวาส
  3. ขยาย OBS Studio ในรายการ Actions แล้วลากแอ็กชัน OBS ที่ต้องการเข้ามา
  4. เชื่อมทริกเกอร์กับแอ็กชัน ตั้งชื่อฉาก/แหล่งข้อมูล OBS ให้ตรงทุกตัว บันทึก และเปิดใช้โฟลว์
รายการแอ็กชัน OBS Studio ในตัวแก้ไข Event Flow ของ Social Stream Ninja
กลุ่ม OBS Studio มีตัวควบคุมฉาก แหล่งข้อมูล ข้อความ สื่อ เสียง ฟิลเตอร์ เอาต์พุต และรีเพลย์บัฟเฟอร์
ชื่อ 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 หรือ OBS Browser Source API สำรอง
สลับแหล่งข้อมูล (Toggle Source)แสดง ซ่อน หรือสลับรายการในฉาก Scene และ Group เป็นฟิลด์ระบุเป้าหมายที่ไม่บังคับWebSocket
ตั้งข้อความแหล่งข้อมูล (Set Text Source)อัปเดต Text (GDI+) หรือ Text (FreeType 2) พร้อมตัวแทนค่าในเทมเพลตWebSocket
ควบคุมแหล่งสื่อ (Control Media Source)เล่น/เล่นต่อ หยุดชั่วคราว เริ่มใหม่ หยุด ถัดไป หรือก่อนหน้าWebSocket
ตั้งระดับเสียงแหล่งข้อมูล (Set Source Volume)ตั้งค่าอินพุตตั้งแต่ -100 เป็น +26 dBWebSocket
รีเฟรชแหล่งเบราว์เซอร์ (Refresh Browser Source)โหลดแหล่งเบราว์เซอร์ใหม่โดยไม่ใช้แคชWebSocket
สลับฟิลเตอร์ (Toggle Filter)เปิด ปิด หรือสลับฟิลเตอร์ของแหล่งข้อมูลตามชื่อWebSocket
ปิด/เปิดเสียง (Mute/Unmute Audio)ปิดเสียง เปิดเสียง หรือสลับสถานะเสียงของอินพุตWebSocket
เริ่มบันทึก (Start Recording)เริ่มการบันทึกของ OBSWebSocket หรือ OBS Browser Source API สำรอง
หยุดบันทึก (Stop Recording)หยุดการบันทึกของ OBSWebSocket หรือ OBS Browser Source API สำรอง
เริ่มสตรีม (Start Streaming)เริ่มเอาต์พุตสตรีม OBS ที่ตั้งค่าไว้WebSocket หรือ OBS Browser Source API สำรอง
หยุดสตรีม (Stop Streaming)หยุดเอาต์พุตสตรีม OBSWebSocket หรือ OBS Browser Source API สำรอง
ควบคุมรีเพลย์บัฟเฟอร์ (Control Replay Buffer)เริ่ม หยุด หรือสลับรีเพลย์บัฟเฟอร์WebSocket
บันทึกรีเพลย์บัฟเฟอร์ (Save Replay Buffer)บันทึกรีเพลย์บัฟเฟอร์ที่กำลังทำงานWebSocket หรือ OBS Browser Source API สำรอง

Set Text Source และตัวแปรโฟลว์

ช่องข้อความรองรับตัวแทนค่าข้อความทั่วไป เช่น {username}, {message}, {source}, และ {donation} รวมถึงค่าที่โหนดก่อนหน้าในโฟลว์เพิ่ม เช่น {counterValue}, {counterTarget}, และ {counterRemaining}.

{username}: now {counterValue}, need {counterTarget}
คุณสมบัติ Set Text Source พร้อมตัวแปรเทมเพลตของตัวนับ
Set Text Source เขียนค่าที่แทนตัวแปรแล้วลงในอินพุตข้อความ OBS ตามชื่อโดยตรง
สำหรับแหล่ง Text (GDI+) หรือ Text (FreeType 2) ให้ปิด อ่านจากไฟล์ (Read from file) มิฉะนั้น OBS อาจแสดงเนื้อหาไฟล์ต่อไปแทนข้อความที่ Event Flow ส่งมา

ตัวควบคุม Media Source

เล่น / หยุดชั่วคราว

เล่น จะเล่นสื่อที่หยุดชั่วคราวต่อ หยุดชั่วคราว จะคงตำแหน่งปัจจุบันไว้

เริ่มใหม่ / หยุด

เริ่มใหม่ จะเริ่มจากต้น หยุด จะจบการเล่นและรีเซ็ตอินพุต

ถัดไป / ก่อนหน้า

เลื่อนรายการเล่นของอินพุตที่รองรับ เช่น VLC Video Source แหล่ง Media Source ที่เป็นไฟล์เดียวอาจไม่ตอบสนองต่อแอ็กชันเหล่านี้

ระดับเสียง การปิดเสียง และฟิลเตอร์

ตั้งระดับเสียงแหล่งข้อมูล (Set Source Volume) ใช้ dB ตามสเกลมิกเซอร์ OBS: 0 dB คือเกนที่ไม่เปลี่ยน ค่าติดลบจะเบาลง และ -100 dB แทบไม่มีเสียง ส่วน Mute เป็นสถานะแยก Toggle Filter เปลี่ยนเฉพาะสถานะเปิดใช้ของฟิลเตอร์ที่มีอยู่ ไม่ได้แก้การตั้งค่าฟิลเตอร์

รีเพลย์บัฟเฟอร์

เปิด Replay Buffer ก่อนใน OBS Settings → Output ใช้ ควบคุมรีเพลย์บัฟเฟอร์ (Control Replay Buffer) เพื่อเริ่ม/หยุด แล้วใช้ บันทึกรีเพลย์บัฟเฟอร์ (Save Replay Buffer) เพื่อเขียนช่วงล่าสุดที่เก็บในบัฟเฟอร์ลงดิสก์

คำเตือนเกี่ยวกับเอาต์พุตสด: Start/Stop Streaming และ Start/Stop Recording ทำงานทันที ใช้ทริกเกอร์ สิทธิ์ และคูลดาวน์ที่จำกัดอย่างเหมาะสม เพื่อไม่ให้ข้อความแชตทั่วไปกระตุ้นโดยไม่ตั้งใจ

5. ตัวอย่างที่มีประโยชน์

ข้อความทุกชั่วโมงขณะ OBS กำลังไลฟ์

ในตัวแก้ไข Event Flow เลือก Start with a template → Intermediate → Hourly message while OBS is live โดยเริ่มในสถานะปิด และมีสามสาขาในโฟลว์เดียว:

  • OBS Stream Started → Set Gate State: ON
  • Time Interval (3600 วินาที) → 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 ยังมีตัวควบคุม OBS Browser Source แบบเดิมในแผงด็อก Streaming Chat ซึ่งไม่ใช้บริดจ์ WebSocket ของ Flow Actions

ตัวเลือกทำอะไรข้อกำหนด
ตัวแสดงฉาก OBS ปัจจุบันแสดงฉากที่ใช้งานอยู่ในแผงด็อก Streaming Chatแผงด็อกที่โหลดภายใน OBS พร้อมสิทธิ์อ่าน
ผู้ชมทั่วไปใช้ !cycle ได้วนไปยังฉาก OBS ถัดไป โดยจำกัดหนึ่งครั้งต่อ 10 วินาทีเปิดตัวเลือกในป๊อปอัป และโหลดแผงด็อกใน OBS พร้อมสิทธิ์ Advanced
ผู้ใช้ที่มีสิทธิ์ใช้ !start / !stop ได้เริ่มหรือหยุดสตรีมจากผู้ใช้แชตที่เชื่อถือได้เปิดตัวเลือกในป๊อปอัป และโหลดแผงด็อกใน OBS พร้อมสิทธิ์ควบคุม Full/Advanced
แผงควบคุม OBS ระยะไกลแสดงฉากและเปลี่ยนฉากหรือสลับการสตรีม/บันทึกได้ เมื่อแผงด็อก OBS เป้าหมายให้ระดับการควบคุมที่ต้องการแผงด็อก Streaming Chat ที่จับคู่กับแผงด็อกซึ่งทำงานภายใน OBS
เครื่องมือทดสอบ OBS WebSocketตรวจสอบรุ่น การเชื่อมต่อ ฉาก และคำขอแต่ละรายการก่อนใช้ Event Flowเปิดเครื่องมือทดสอบ

7. การแก้ปัญหา

ปัญหาตรวจสอบ
ไม่มีอะไรเกิดขึ้นโฟลว์บันทึกและเปิดใช้แล้ว หน้า Flow Actions เปิดอยู่ และทั้งคู่ใช้รหัสเซสชันเดียวกัน
OBS เชื่อมต่อไม่ได้เปิดเซิร์ฟเวอร์ WebSocket แล้ว URL คือ ws://127.0.0.1:4455 และรหัสผ่านตรงกัน พอร์ต 4444 เป็นค่าเริ่มต้นของ v4 ที่เลิกใช้แล้ว
ไม่พบฉาก/แหล่งข้อมูล/ฟิลเตอร์คัดลอกชื่อ OBS ให้ตรงทุกตัว สำหรับการแสดง/ซ่อน ให้ตั้ง Scene หรือ Group หากรายการซ้อนอยู่หรืออยู่นอกฉากปัจจุบัน
ข้อความไม่เปลี่ยนใช้ Text (GDI+) หรือ Text (FreeType 2) ตรวจสอบชื่ออินพุต และปิด อ่านจากไฟล์ (Read from file).
Media Ended ไม่ทำงานเลยใช้ OBS WebSocket v5 และอินพุตสื่อจริง สื่อที่เล่นวนจะไม่เข้าสู่สถานะเล่นจบ
Next/Previous ไม่ทำอะไรใช้แหล่งข้อมูลที่รองรับรายการเล่น เช่น VLC Video Source
บันทึกรีเพลย์ไม่สำเร็จเปิด Replay Buffer ในการตั้งค่า Output ของ OBS และเริ่มทำงานก่อนบันทึก
แอ็กชันหยุดเมื่อเปลี่ยนฉากปิดใช้งาน ปิดแหล่งข้อมูลเมื่อมองไม่เห็น (Shutdown source when not visible) บนแหล่งเบราว์เซอร์ Flow Actions หรือเปิดหน้าไว้ที่อื่น
ลำดับการวินิจฉัย: เปิด เครื่องมือทดสอบ → ยืนยัน GetVersion → ยืนยันฉาก/อินพุต → ทดสอบคำขอแต่ละรายการ → ทดสอบ Event Flow ทั้งหมด