mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Better docs
This commit is contained in:
92
PROTOCOL.md
Normal file
92
PROTOCOL.md
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
obs-websocket protocol reference
|
||||||
|
================================
|
||||||
|
|
||||||
|
## General introduction
|
||||||
|
**This document is still a WIP. Some things are missing (but won't stay like this for long).**
|
||||||
|
|
||||||
|
Messages exchanged between the client and the server are JSON objects.
|
||||||
|
The protocol in general in based on the OBS Remote protoctol created by Bill Hamilton, with new commands specific to OBS Studio.
|
||||||
|
|
||||||
|
## Events
|
||||||
|
|
||||||
|
### Description
|
||||||
|
Events are sent exclusively by the server and broadcasted to every client connected to the server.
|
||||||
|
An event message has at least one field :
|
||||||
|
- **update-type** (string) : the type of event
|
||||||
|
Additional fields will be present in the event message if the event type requires it.
|
||||||
|
|
||||||
|
### Event types
|
||||||
|
#### "SwitchScenes"
|
||||||
|
OBS is switching to another scene.
|
||||||
|
Additional fields :
|
||||||
|
- **scene-name** : the name of the scene being switched to
|
||||||
|
|
||||||
|
#### "ScenesChanged"
|
||||||
|
The scene list has been modified (scenes added, removed or moved).
|
||||||
|
|
||||||
|
#### "StreamStarting"
|
||||||
|
Streaming is starting but isn't completely started yet.
|
||||||
|
|
||||||
|
#### "StreamStarted"
|
||||||
|
*New in OBS Studio*
|
||||||
|
Streaming has been started successfully.
|
||||||
|
|
||||||
|
#### "StreamStopping"
|
||||||
|
Streaming is stopping but isn't completely stopped yet.
|
||||||
|
|
||||||
|
#### "StreamStopped"
|
||||||
|
*New in OBS Studio*
|
||||||
|
Streaming has been stopped successfully.
|
||||||
|
|
||||||
|
#### "RecordingStarting"
|
||||||
|
*New in OBS Studio*
|
||||||
|
Recording is starting but isn't completely started yet.
|
||||||
|
|
||||||
|
#### "RecordingStarted"
|
||||||
|
*New in OBS Studio*
|
||||||
|
Recording has been started successfully.
|
||||||
|
|
||||||
|
#### "RecordingStopping"
|
||||||
|
*New in OBS Studio*
|
||||||
|
Recording is stopping but isn't completely stopped yet.
|
||||||
|
|
||||||
|
#### "RecordingStopped"
|
||||||
|
*New in OBS Studio*
|
||||||
|
Recording has been stopped successfully.
|
||||||
|
|
||||||
|
#### "Exiting"
|
||||||
|
*New in OBS Studio*
|
||||||
|
OBS is exiting.
|
||||||
|
|
||||||
|
## Requests
|
||||||
|
|
||||||
|
### Description
|
||||||
|
Requests are sent by the client and have at least two fields :
|
||||||
|
- **"request-type"** (string) : one of the request types listed in the sub-section "Requests".
|
||||||
|
- **"message-id"** (unsigned integer) : an integer number defined by the client that will be embedded in the response from the server.
|
||||||
|
Depending on the request type, additional fields are needed in the request message (see the "Request types" section below for more informations).
|
||||||
|
|
||||||
|
Once a request is sent, the server processes it and sends a JSON response to the client with the following fields in it :
|
||||||
|
- **"message-id"** (unsigned integer) : the unsigned integer you specified in the request.
|
||||||
|
- **"status"** (string) : two possible values : "ok" or "error".
|
||||||
|
- **"error"** (string) : the error message associated with an error reponse (when "status" equals "error").
|
||||||
|
Additional fields can be sent in the response if a request type requires it.
|
||||||
|
|
||||||
|
### Request types
|
||||||
|
#### "GetVersion"
|
||||||
|
#### "GetAuthRequired"
|
||||||
|
#### "Authenticate"
|
||||||
|
#### "GetCurrentScene"
|
||||||
|
#### "SetCurrentScene"
|
||||||
|
#### "GetSceneList"
|
||||||
|
#### "SetSourceRender"
|
||||||
|
#### "StartStopStreaming"
|
||||||
|
#### "StartStopRecording"
|
||||||
|
*New in OBS Studio*
|
||||||
|
#### "GetStreamingStatus"
|
||||||
|
#### "GetTransitionList"
|
||||||
|
*New in OBS Studio*
|
||||||
|
#### "GetCurrentTransition"
|
||||||
|
*New in OBS Studio*
|
||||||
|
#### "SetCurrentTransition"
|
||||||
|
*New in OBS Studio*
|
@ -6,8 +6,14 @@ Websocket API for OBS Studio.
|
|||||||
You need QT 5.7 (with QtWebSockets), CMake, and a working development environment for OBS Studio installed on your computer.
|
You need QT 5.7 (with QtWebSockets), CMake, and a working development environment for OBS Studio installed on your computer.
|
||||||
|
|
||||||
## How to build
|
## How to build
|
||||||
You'll need to fill these CMake variables :
|
In CMake, you'll need to fill these CMake variables :
|
||||||
- **QTDIR** (path) : location of the Qt environment suited for your compiler and architecture
|
- **QTDIR** (path) : location of the Qt environment suited for your compiler and architecture
|
||||||
- **LIBOBS_INCLUDE_DIR** (path) : location of the libobs subfolder in the source code of OBS Studio
|
- **LIBOBS_INCLUDE_DIR** (path) : location of the libobs subfolder in the source code of OBS Studio
|
||||||
- **LIBOBS_LIB** (filepath) : location of the obs.lib file
|
- **LIBOBS_LIB** (filepath) : location of the obs.lib file
|
||||||
- **OBS_FRONTEND_LIB** (filepath) : location of the obs-frontend-api.lib file
|
- **OBS_FRONTEND_LIB** (filepath) : location of the obs-frontend-api.lib file
|
||||||
|
|
||||||
|
After building the obs-websocket plugin's binary, copy its Qt dependencies (QtCore, QtNetwork and QtWebSockets library binaries)in the same folder.
|
||||||
|
|
||||||
|
## How to use
|
||||||
|
There's currently no frontend or language API available for obs-websocket. However, the full protocol reference is documented in the [PROTOCOL.md](PROTOCOL.md) file.
|
||||||
|
A simple websocket client can connect to the plugin's embedded server.
|
Reference in New Issue
Block a user