Aplicación de escritorio Windows (.NET 4.8 / WinForms) para gestionar grabaciones de OBS Studio desde un teclado, Stream Deck o cualquier dispositivo de control externo.
- Control de grabación vía OBS WebSocket v5 — inicia y detiene la grabación sin tocar OBS
- Indicadores de estado en tiempo real — la UI refleja cambios de grabación al instante (incluso si se inician desde OBS)
- Flujo de revisión de clips — reproduce el último archivo grabado con VLC, luego lo conserva o elimina con un solo botón
- Autenticación segura — soporta contraseña OBS WebSocket con hash SHA-256 según el protocolo oficial
| Componente | Detalle |
|---|---|
| Framework | .NET 4.8 / WinForms |
| Lenguaje | C# |
| Protocolo OBS | WebSocket v5 (OBS 28+) |
| Dependencia externa | Newtonsoft.Json 13.0.3 |
| Reproductor | VLC (externo) |
ObsHelper/
├── Program.cs # Entry point, DPI-aware
├── MainForm.cs # UI principal — 3 pestañas
├── ObsWebSocketClient.cs # Cliente OBS WebSocket v5
├── SettingsManager.cs # Persistencia en settings.ini
├── ObsHelper.csproj
├── ObsHelper.sln
├── *.png # Iconos de botones
└── settings.ini # Generado en runtime (excluido de git)
Implementa el protocolo OBS WebSocket v5 sobre System.Net.WebSockets.ClientWebSocket:
Cliente OBS
│── ConnectAsync() ──────────►│
│◄── Hello (op=0) ────────────│ { authentication: { challenge, salt } }
│── Identify (op=1) ─────────►│ { rpcVersion: 1, authentication: "<hash>" }
│◄── Identified (op=2) ───────│
│ │
│── Request StartRecord ─────►│ op=6
│◄── Response ────────────────│ op=7
│◄── RecordStateChanged ──────│ op=5 (evento en tiempo real)
Cálculo de autenticación:
secret = base64( SHA256(password + salt) )
auth = base64( SHA256(secret + challenge) )
Suscripción a eventos: General (1) | Outputs (64) = 65
Recibe RecordStateChanged sin polling.
Persistencia en un archivo settings.ini plano (clave=valor). Campos:
| Clave | Default |
|---|---|
obs-folder |
Carpeta Vídeos del sistema |
vlc-path |
Auto-detectado |
obs-ws-host |
localhost |
obs-ws-port |
4455 |
obs-ws-password |
(vacío) |
settings.iniestá excluido del repositorio para no exponer rutas locales ni contraseñas.
Tres pestañas:
| Pestaña | Función |
|---|---|
| Grabación | Reproduce, conserva (.keep/) o elimina (.trash/) el último clip |
| OBS Control | Conecta/desconecta WebSocket, inicia/detiene grabación |
| Configuración | Configura carpeta OBS, ruta VLC y parámetros WebSocket |
- Visual Studio 2019+ o .NET SDK 4.8+
- NuGet restore automático al compilar
dotnet build- Windows 10/11
- .NET Framework 4.8
- OBS Studio 28 o superior (WebSocket integrado)
- VLC Media Player (para reproducción de clips)
En OBS Studio:
Herramientas→obs-websocket Settings- Activar Enable WebSocket server
- Puerto por defecto: 4455
- Opcional: establecer contraseña
MIT