Help with Customizing OBS Studio Programmatically Using obs-websocket.net

gcm.hyd

New Member
I'm working on automating some tasks in OBS Studio using the obs-websocket.net library. I've been able to connect to the OBS WebSocket server and perform some basic operations, but I’m running into issues with configuring settings and creating inputs.
Here’s what I have so far:

csharp
string serveraddress = "ws://localhost:4455";
string password = "ZjiOb5ZNs6C9LN06";

OBSWebsocket obs = new OBSWebsocket();
obs.ConnectAsync(serveraddress, password);

Thread.Sleep(10000);

if (obs.IsConnected)
{
Console.WriteLine("Connected to OBS WebSocket server.");

// Get the list of scenes
List<SceneBasicInfo> scenes = obs.ListScenes();

// Check if the scene already exists
string sceneName = "NewScene";
bool sceneExists = scenes.Exists(scene => scene.Name == sceneName);

if (!sceneExists)
{
obs.CreateScene(sceneName);
}

// Set the created scene as the current scene
obs.SetCurrentProgramScene(sceneName);

var defaultSettings = obs.GetInputDefaultSettings("dshow_input");

// Modify settings to use device default settings
var sourceSettings = new JObject(defaultSettings);
sourceSettings["resolution_fps_type"] = "Device Default";
sourceSettings["device_id"] = "\\\\?\\usb#vid_04f2&pid_b2ea&mi_00#7&6fe2ea7&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global";
sourceSettings["resolution"] = "640x480";
sourceSettings["fps"] = 30.00;
sourceSettings["format"] = "YUY2";
sourceSettings["flip"] = 0;
sourceSettings["buffering"] = false;
sourceSettings["hw_decode"] = false;
sourceSettings["video_device_id"] = "Integrated Camera";
sourceSettings["video_format"] = "Any";
sourceSettings["fps"] = 30;

obs.CreateInput(sceneName, "video", "dshow_input", sourceSettings, true);

// Start recording
obs.StartRecord();

Issues:​

  1. Creating Inputs: I’m not sure if the sourceSettings JSON object is correctly configured. The video_device_id and video_format fields might need to be adjusted, but I’m not sure what the correct values should be.
  2. Setting Properties: When calling obs.CreateInput(), I’m unsure if the properties I’ve set in sourceSettings will work as expected. How can I verify if the settings are correctly applied?
  3. Error Handling: I would like to add better error handling and logging to understand if and where my code might be failing.

Questions:​

  1. Can anyone help me with the correct format for sourceSettings when creating a video input?
  2. How can I verify that the settings are applied correctly?
  3. What are some best practices for error handling and debugging when using obs-websocket.net?
Any help or suggestions would be greatly appreciated!

Thanks in advance!

}
 

udpractical

New Member
I'm working on automating some tasks in OBS Studio using the obs-websocket.net library. I've been able to connect to the OBS WebSocket server and perform some basic operations, but I’m running into issues with configuring settings and creating inputs.
Here’s what I have so far:

csharp
string serveraddress = "ws://localhost:4455";
string password = "ZjiOb5ZNs6C9LN06";

OBSWebsocket obs = new OBSWebsocket();
obs.ConnectAsync(serveraddress, password);

Thread.Sleep(10000);

if (obs.IsConnected)
{
Console.WriteLine("Connected to OBS WebSocket server.");

// Get the list of scenes
List<SceneBasicInfo> scenes = obs.ListScenes();

// Check if the scene already exists
string sceneName = "NewScene";
bool sceneExists = scenes.Exists(scene => scene.Name == sceneName);

if (!sceneExists)
{
obs.CreateScene(sceneName);
}

// Set the created scene as the current scene
obs.SetCurrentProgramScene(sceneName);

var defaultSettings = obs.GetInputDefaultSettings("dshow_input");

// Modify settings to use device default settings
var sourceSettings = new JObject(defaultSettings);
sourceSettings["resolution_fps_type"] = "Device Default";
sourceSettings["device_id"] = "\\\\?\\usb#vid_04f2&pid_b2ea&mi_00#7&6fe2ea7&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global";
sourceSettings["resolution"] = "640x480";
sourceSettings["fps"] = 30.00;
sourceSettings["format"] = "YUY2";
sourceSettings["flip"] = 0;
sourceSettings["buffering"] = false;
sourceSettings["hw_decode"] = false;
sourceSettings["video_device_id"] = "Integrated Camera";
sourceSettings["video_format"] = "Any";
sourceSettings["fps"] = 30;

obs.CreateInput(sceneName, "video", "dshow_input", sourceSettings, true);

// Start recording
obs.StartRecord();

Issues:​

  1. Creating Inputs: I’m not sure if the sourceSettings JSON object is correctly configured. The video_device_id and video_format fields might need to be adjusted, but I’m not sure what the correct values should be.
  2. Setting Properties: When calling obs.CreateInput(), I’m unsure if the properties I’ve set in sourceSettings will work as expected. How can I verify if the settings are correctly applied? snake game
  3. Error Handling: I would like to add better error handling and logging to understand if and where my code might be failing.

Questions:​

  1. Can anyone help me with the correct format for sourceSettings when creating a video input?
  2. How can I verify that the settings are applied correctly?
  3. What are some best practices for error handling and debugging when using obs-websocket.net?
Any help or suggestions would be greatly appreciated!

Thanks in advance!

}
It’s essential to confirm the exact device settings through OBS’s UI first. Often, I set up the device manually, then export the settings using OBS’s export feature or check the logs.
 
Top