Skip to content

javierlago/record-helper

Repository files navigation

OBS Recording Helper

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.

Características

  • 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

Stack

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)

Estructura del proyecto

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)

Arquitectura

ObsWebSocketClient

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.

SettingsManager

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.ini está excluido del repositorio para no exponer rutas locales ni contraseñas.

MainForm

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

Requisitos de compilación

  • Visual Studio 2019+ o .NET SDK 4.8+
  • NuGet restore automático al compilar
dotnet build

Requisitos de ejecución

  • Windows 10/11
  • .NET Framework 4.8
  • OBS Studio 28 o superior (WebSocket integrado)
  • VLC Media Player (para reproducción de clips)

Configuración de OBS WebSocket

En OBS Studio:

  1. Herramientasobs-websocket Settings
  2. Activar Enable WebSocket server
  3. Puerto por defecto: 4455
  4. Opcional: establecer contraseña

Licencia

MIT

About

A Windows Forms application designed to manage OBS Studio recordings using WebSocket integration. It allows users to review, save, or discard clips while providing seamless recording control via keyboard shortcuts or Stream Deck.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages