1. เชื่อมต่อ Flow Actions กับ OBS
OBS WebSocket v5 มีใน OBS 28 และใหม่กว่า Social Stream Ninja ใช้เพื่อควบคุม OBS เต็มรูปแบบและรับเหตุการณ์สื่อ
- ใน OBS เปิด Tools → WebSocket Server Settings.
- เปิดเซิร์ฟเวอร์ WebSocket ใช้พอร์ตเริ่มต้น
4455ตั้งรหัสผ่านหากต้องการ - ใน Social Stream Ninja เปิด Flow Actions แล้วตั้ง URL ของ OBS WebSocket และรหัสผ่านหากมี
- คัดลอก URL ของ Flow Actions และเปิดค้างไว้ แนะนำให้ใช้แหล่งเบราว์เซอร์ 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 Browser Source API | ตัวสำรองสำหรับเปลี่ยนฉาก เริ่ม/หยุดสตรีม เริ่ม/หยุดบันทึก และบันทึกรีเพลย์บัฟเฟอร์ | Flow Actions ที่โหลดภายใน OBS พร้อม Advanced Access Level ฟีเจอร์แหล่งข้อมูล ฟิลเตอร์ ข้อความ ระดับเสียง สื่อ รีเฟรช และสื่อเล่นจบ ยังต้องใช้ 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 หรือ 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 dB | WebSocket |
| รีเฟรชแหล่งเบราว์เซอร์ (Refresh Browser Source) | โหลดแหล่งเบราว์เซอร์ใหม่โดยไม่ใช้แคช | WebSocket |
| สลับฟิลเตอร์ (Toggle Filter) | เปิด ปิด หรือสลับฟิลเตอร์ของแหล่งข้อมูลตามชื่อ | WebSocket |
| ปิด/เปิดเสียง (Mute/Unmute Audio) | ปิดเสียง เปิดเสียง หรือสลับสถานะเสียงของอินพุต | WebSocket |
| เริ่มบันทึก (Start Recording) | เริ่มการบันทึกของ OBS | WebSocket หรือ OBS Browser Source API สำรอง |
| หยุดบันทึก (Stop Recording) | หยุดการบันทึกของ OBS | WebSocket หรือ OBS Browser Source API สำรอง |
| เริ่มสตรีม (Start Streaming) | เริ่มเอาต์พุตสตรีม OBS ที่ตั้งค่าไว้ | WebSocket หรือ OBS Browser Source API สำรอง |
| หยุดสตรีม (Stop Streaming) | หยุดเอาต์พุตสตรีม OBS | WebSocket หรือ 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}
ตัวควบคุม 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) เพื่อเขียนช่วงล่าสุดที่เก็บในบัฟเฟอร์ลงดิสก์
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 ทั้งหมด