OBS Studio Web Socket tutorial with examples Python and Javascript

WebSockets are a powerful communication protocol that allows real-time data exchange between a client (such as OBS Studio) and a server. In OBS Studio, you can use WebSockets to trigger various actions, change scenes, update text sources, and more. In this tutorial, we'll walk you through the process of setting up and using WebSockets in OBS Studio, and we'll provide an example of how to use it to change scenes.

Prerequisites

  • OBS Studio: Download and install the latest version of OBS Studio from the official website.
  • Latest OBS Studio versions come with the WebSocket plugin preinstalled.

Setting Up WebSocket Server in OBS Studio

  1. Open OBS Studio.
  2. Go to the "Tools" menu and select "WebSocket Server Settings."
  3. In the WebSocket Server Settings window, configure the following settings:
    • Enable WebSocket Server: Check this box to enable the WebSocket server.
    • Port: Specify the port number for the WebSocket server. The default is 4444, but you can choose a different port if necessary.
    • Password: You can set a password for the WebSocket server if needed. Make sure to remember this password as you'll need it to authenticate with the server.
  4. Click the "Apply" button, and then click "OK" to save your settings.

Using WebSockets in OBS Studio

Now that you've set up the WebSocket server in OBS Studio, you can use it to control OBS remotely. Let's create a simple example to change scenes using a WebSocket client.

Example: Changing Scenes with Python


    import websocket
    import json

    # Define the WebSocket server URL and password
    server_url = "ws://localhost:4444"  # Replace with your server URL
    password = ""  # Replace with your password if set

    # Connect to the WebSocket server
    ws = websocket.create_connection(server_url)

    # Authenticate with the server (if a password is set)
    if password:
        auth_data = {
            "request-type": "Authenticate",
            "password": password
        }
        ws.send(json.dumps(auth_data))

    # Define the data to change the scene
    scene_data = {
        "request-type": "SetCurrentScene",
        "scene-name": "YourSceneName"  # Replace with the name of the scene you want to switch to
    }

    # Send the scene change request
    ws.send(json.dumps(scene_data))

    # Close the WebSocket connection
    ws.close()
        

Example 2: Change scenes with JavaScript

Remember that for this to work, OBS Studio and the WebSocket server should be running on the specified machine with the correct configuration.

// Define the WebSocket server URL and password
        const serverUrl = "ws://localhost:4444"; // Replace with your server URL
        const password = ""; // Replace with your password if set

        // Function to change the scene
        function changeScene() {
            const ws = new WebSocket(serverUrl);

            // When the WebSocket connection is opened
            ws.addEventListener("open", function(event) {
                // Authenticate with the server (if a password is set)
                if (password) {
                    const authData = {
                        "request-type": "Authenticate",
                        "password": password
                    };
                    ws.send(JSON.stringify(authData));
                }

                // Define the data to change the scene
                const sceneData = {
                    "request-type": "SetCurrentScene",
                    "scene-name": "YourSceneName" // Replace with the name of the scene you want to switch to
                };

                // Send the scene change request
                ws.send(JSON.stringify(sceneData));

                // Close the WebSocket connection
                ws.close();
            });

            // Handle WebSocket errors
            ws.addEventListener("error", function(event) {
                console.error("WebSocket Error:", event);
            });

            // Handle WebSocket closure
            ws.addEventListener("close", function(event) {
                console.log("WebSocket Closed:", event);
            });
        }

This example demonstrates how to change scenes, but you can use WebSockets to perform various actions and control different aspects of OBS Studio programmatically.

Now you have the basic knowledge to set up and use WebSockets in OBS Studio. Explore the OBS WebSocket documentation here for more available commands and features to control OBS remotely according to your needs.


Last updated

Comments

Leave a Comment