Repository navigation
Stream Deck es
English · Deutsch · Español · Inicio
Rivulet implementa el protocolo OBS WebSocket v5 (JSON), el mismo protocolo de red que usan los plugins de OBS del ecosistema Stream Deck. Apunta un plugin al puerto y la contraseña de Rivulet y tu deck controla escenas, grabación, emisión y silencio — sin software puente adicional.
¿Qué plugin? Instala un plugin de Stream Deck que hable obs-websocket v5 (basado en obs-websocket-js, p. ej. "OBS Tools" de BarRaider, o las integraciones de Bitfocus Companion / Touch Portal). Los plugins oficiales "OBS Studio" de Elgato son plugins internos de OBS y no se conectan mediante obs-websocket.
Abre Settings → OBS WebSocket (Stream Deck):
- Marca Enable remote control.
- Anota el puerto — por defecto
4455, compatible con OBS. - Opcionalmente define una contraseña. Vacía significa sin autenticación.
El servidor escucha solo en 127.0.0.1: es alcanzable desde esta máquina (y por el software Stream Deck que corre en ella), no desde otras. Para controlar Rivulet desde un teléfono u otro equipo, usa el compañero remoto — el bind a la LAN allí exige contraseña y, para iniciar/detener la emisión, un permiso explícito.
En los ajustes de OBS WebSocket del plugin (app Stream Deck → acción → Conexión):
| Campo | Valor |
|---|---|
| Host | 127.0.0.1 |
| Puerto |
4455 (el puerto que configuraste) |
| Contraseña | la definida en Rivulet, o vacía si la autenticación está desactivada |
| Versión del protocolo | 5 (algunos plugins lo preguntan; elige 5, no 4) |
El plugin realiza entonces el handshake v5 por sí mismo: Hello → Identify (con la respuesta SHA-256 si hay contraseña) → Identified, y se suscribe a los eventos que necesita. Los desplegables de escenas se rellenan con GetSceneList; si una lista queda vacía, pulsa Refresh en los ajustes de la acción con Rivulet en ejecución.
| Acción del deck | Request enviado | Notas |
|---|---|---|
| Cambiar escena | SetCurrentProgramScene |
los nombres vienen de GetSceneList
|
| Grabación iniciar/detener |
StartRecord / StopRecord
|
o ToggleRecord como botón único |
| Pausa/reanudar grabación |
PauseRecord / UnpauseRecord
|
el estado del botón sigue a RecordStateChanged
|
| Emisión iniciar/detener |
StartStream / StopStream
|
o ToggleStream como botón único |
| Silenciar | ToggleInputMute |
necesita el nombre del input de GetInputList
|
| Guardar replay | SaveReplayBuffer |
guarda el clip en búfer (opcionalmente con ruta explícita) |
| Replay on/off | ToggleReplayBuffer |
activar/desactivar el búfer de replay |
| Modo estudio | SetStudioModeEnabled |
escenas de vista previa/programa independientes |
| Iconos de estado |
GetRecordStatus / GetStreamStatus / GetReplayBufferStatus
|
se leen al conectar y en cada evento de estado |
Los botones reflejan la realidad: los cambios de estado que haces en la ventana de Rivulet (botón de grabación, mute del mezclador, cambio de escena) se difunden como eventos v5 a todos los decks conectados, así que los iconos se mantienen al día sin tocar el deck. Las peticiones que no pueden tener éxito responden con honestidad — p. ej. iniciar la emisión sin ingest configurado devuelve el estado 501 con un comentario en lugar de simular éxito.
- Define una contraseña en máquinas compartidas: sin ella, cualquier proceso local puede cambiar escenas o iniciar/detener grabación y emisión.
- El servidor nunca se enlaza más allá de loopback por sí solo; el acceso por LAN pasa por los permisos explícitos del compañero remoto.
- El inicio/detención remota de la emisión desde superficies fuera de loopback requiere la casilla de permiso explícito (Settings → Remote companion).
| Síntoma | Causa probable |
|---|---|
| "Waiting for OBS" / bucle de conexión | Servidor no activado en Rivulet o puerto incorrecto |
| Error de autenticación | La contraseña difiere entre plugin y Rivulet (o definida en uno y no en el otro) |
| Desplegable de escenas vacío | Pulsa Refresh en los ajustes de la acción; comprueba que Rivulet tiene escenas |
| El botón de grabación no hace nada, el plugin muestra 204/UnknownRequest | El plugin usa nombres v4 o la versión 4 del protocolo — cambia plugin/conexión a la versión 5 |
| Iniciar emisión falla con 501 | Ningún ingest configurado en la vista Stream de Rivulet |
| Silenciar no hace nada | El nombre del input no coincide — elige el input de GetInputList (Rivulet publica sus fuentes ahí) |
El servidor de Rivulet habla exactamente los nombres v5 (StartRecord, ToggleStream, ToggleInputMute) y rechaza las grafías v4 antiguas, igual que el obs-websocket real. Una prueba de compatibilidad en CI ejecuta la secuencia completa de conexión y control que usan los plugins. Detalles y ejemplos de payload: la documentación de obs-websocket.
Last reviewed: 2026-09-22
Relacionado: Streaming — configurar la emisión en directo · Troubleshooting y FAQ