Skip to content

Stream Deck es

stbrumm edited this page Sep 22, 2026 · 2 revisions

Stream Deck

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.

1. Activar el servidor en Rivulet

Abre Settings → OBS WebSocket (Stream Deck):

  1. Marca Enable remote control.
  2. Anota el puerto — por defecto 4455, compatible con OBS.
  3. 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.

2. Conectar el plugin

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.

3. Acciones que funcionan de inmediato

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.

Notas de seguridad

  • 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).

Solución de problemas

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í)

Bajo el capó

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

Clone this wiki locally