1. Flow Actions를 OBS에 연결
OBS WebSocket v5는 OBS 28 이상에 내장되어 있습니다. Social Stream Ninja는 전체 OBS 제어와 미디어 이벤트에 이를 사용합니다.
- OBS에서 다음을 여세요: 도구 → WebSocket 서버 설정.
- 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 대체 경로 |
텍스트 소스 설정과 흐름 변수
텍스트 입력란은 다음과 같은 일반 메시지 자리표시자를 지원합니다: {username}, {message}, {source}, 그리고 {donation}, 그리고 앞선 흐름 노드가 추가한 값도 지원합니다. 예: {counterValue}, {counterTarget}, 그리고 {counterRemaining}.
{username}: now {counterValue}, need {counterTarget}
미디어 소스 컨트롤
재생 / 일시정지
재생 는 일시정지된 미디어를 이어서 재생합니다. 일시정지 는 현재 위치를 유지합니다.
다시 시작 / 중지
다시 시작 는 처음부터 재생합니다. 중지 는 재생을 끝내고 입력을 초기화합니다.
다음 / 이전
VLC Video Source처럼 재생 목록을 지원하는 입력에서 다음/이전 항목으로 이동합니다. 단일 파일 Media Source는 이 작업을 무시할 수 있습니다.
볼륨, 음소거, 필터
소스 볼륨 설정 (Set Source Volume) 는 OBS 믹서 눈금과 같은 dB 단위를 사용합니다: 0 dB 는 게인 변화 없음, 음수는 더 작은 소리이며 -100 dB 는 사실상 무음입니다. 음소거는 별도의 상태입니다. Toggle Filter는 기존 필터의 활성화 상태만 바꾸며 필터 설정을 편집하지 않습니다.
리플레이 버퍼
먼저 다음에서 리플레이 버퍼를 켜세요: OBS 설정 → 출력. 사용: 리플레이 버퍼 제어 (Control Replay Buffer) 로 시작/중지한 뒤 리플레이 버퍼 저장 (Save Replay Buffer) 로 최근 버퍼 구간을 디스크에 저장하세요.
5. 유용한 예시
OBS 방송 중 매시간 메시지
Event Flow 편집기에서 다음을 선택하세요: 템플릿으로 시작 → 중급 → OBS 방송 중 매시간 메시지을 선택하세요. 처음에는 비활성화되어 있으며 하나의 흐름에 세 분기가 포함됩니다:
- 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 → 권한 조건 → 미디어 소스 제어: 다시 시작.
알림 페이지 새로고침
메시지 정확히 일치 (Message Equals) !refreshalerts → 관리자 조건 → 브라우저 소스 새로고침 (Refresh Browser Source).
알림 중 음악 볼륨 낮추기
소스 볼륨 설정 (Set Source Volume) 대상: -24 dB → 알림 작업 → Delay → 다음으로 복원: 0 dB.
리플레이 워크플로
OBS 방송 시작 (OBS Stream Started) → 리플레이 버퍼 제어: 시작. 별도의 신뢰할 수 있는 명령으로 실행할 작업: 리플레이 버퍼 저장 (Save Replay Buffer).
6. 기타 내장 OBS 컨트롤
Social Stream Ninja에는 스트리밍 채팅 도크의 기존 OBS 브라우저 소스 컨트롤도 있습니다. 이 기능은 Flow Actions WebSocket 브리지를 사용하지 않습니다.
| 옵션 | 역할 | 요구 사항 |
|---|---|---|
| 현재 OBS 장면 표시 | 스트리밍 채팅 도크에 활성 장면을 표시합니다. | 읽기 권한으로 OBS 안에 로드된 도크. |
| 게스트가 !cycle 사용 가능 | 다음 OBS 장면으로 전환하며 10초에 한 번으로 제한됩니다. | 팝업 옵션을 켜고 OBS 안의 도크에 Advanced 접근 권한을 부여하세요. |
| 권한이 있는 사용자가 !start / !stop 사용 가능 | 신뢰하는 채팅 사용자의 명령으로 방송을 시작하거나 중지합니다. | 팝업 옵션을 켜고 OBS 안의 도크에 Full/Advanced 제어 권한을 부여하세요. |
| 원격 OBS 제어 패널 | 장면을 표시하고, 대상 OBS 도크에 필요한 제어 권한이 있으면 장면 전환이나 방송/녹화 켜기/끄기를 수행합니다. | OBS 안에서 실행되는 도크와 연결된 스트리밍 채팅 도크. |
| OBS WebSocket 테스터 | Event Flow를 사용하기 전에 버전, 연결, 장면, 개별 요청을 확인합니다. | 테스터 열기 |
7. 문제 해결
| 문제 | 확인: |
|---|---|
| 아무 동작도 하지 않음 | 흐름을 저장하고 활성화했으며 Flow Actions가 열려 있고 둘의 세션 ID가 같아야 합니다. |
| 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와 실제 미디어 입력을 사용하세요. 반복 재생 미디어는 종료 상태에 도달하지 않습니다. |
| 다음/이전이 작동하지 않음 | VLC Video Source처럼 재생 목록을 지원하는 소스를 사용하세요. |
| 리플레이 저장 실패 | OBS 출력 설정에서 리플레이 버퍼를 켜고 저장하기 전에 시작하세요. |
| 장면을 바꾸면 작업이 멈춤 | 비활성화할 항목: 보이지 않을 때 소스 종료 (Shutdown source when not visible) 을 Flow Actions 브라우저 소스에서 끄거나 다른 곳에 페이지를 열어 두세요. |
GetVersion → 장면/입력 확인 → 개별 요청 테스트 → 전체 Event Flow 테스트.