Last updated:
0 purchases
obs ws
obs_ws #
This Dart library provides a way to communicate with OBS Studio over the obs-websocket plugin protocol.
All requests, responses, events, and enums are auto-generated acccording to the obs-websocket protocol using the generate_protocol.py script. All request/response names and fields are the same as specified in the protocol or were slightly changed to fit Dart function/class naming conventions (i.e. PascalCase to camelCase for request helper functions).
Quick start #
A working program using these examples can be found in example/example.dart.
Add package to pubspec.yaml:
dependencies:
obs_ws: ^1.0.0
copied to clipboard
Import the package:
import 'package:obs_ws/obs_ws.dart';
copied to clipboard
Connect to obs-websocket:
void main() async {
OBSWebSocket obs = await OBSWebSocket.connect("127.0.0.1",
password: password, subscriptions: [EventSubscription.all]);
}
copied to clipboard
Send a request:
var res = await obs.getSceneList();
print("Response code: ${res.status.code}");
print("Scenes: ${res.scenes}");
copied to clipboard
Send a batch request:
var req1 = GetSceneListRequest();
var req2 = GetStudioModeEnabledRequest();
var req3 = CreateSceneRequest(sceneName: "Test");
var res = await obs.sendBatchRequest([req1, req2, req3]);
// res will contain a list of generic OBSWebSocketResponses
//
// If serializeResponses is set to true (default = true),
// you can use the response field from each request object.
print("Request 1 (GetSceneList): ${req1.response?.scenes}");
print("Request 2 (GetStudioModeEnabled): ${req2.response?.studioModeEnabled}");
print("Request 3 (CreateScene) Status: ${req3.response?.status.code.name}");
print("Responses: ${res}");
copied to clipboard
Listen for events:
obs.eventStream.listen((event) {
print("Event type: ${event.type}");
print("Event data (raw): ${event.data}");
if (event is StudioModeStateChangedEvent) {
print("Studio mode status: ${event.studioModeEnabled}");
}
});
copied to clipboard
Disconnect:
await obs.disconnect();
copied to clipboard
Note that you can go as high-level or low-level as you want. For example, if you do not want to use the request/response classes and just want to use JSON, you can use call:
var res = await obs.call("GetInputVolume", {"inputName": "Mic/Aux"});
print(res.data["inputVolumeDb"])
copied to clipboard
If you want to go even lower level, you can send and receive all the opcodes manually:
String requestId = "meow";
RequestOpCode requestOp = RequestOpCode.create(
requestType: "GetInputVolume",
requestId: requestId,
requestData: {
"inputName": "Mic/Aux",
},
);
obs.sendOpCode(requestOp);
RequestResponseOpCode responseOp = await obs.waitForOpCode(WebSocketOpCode.requestResponse);
if (responseOp.requestId == requestId &&
responseOp.requestStatus.code == RequestStatus.success) {
print(responseOp.responseData!["inputVolumeDb"]);
}
obs.opCodeStream.listen((event) {
if (event.code == WebSocketOpCode.event) {
print("Event type: ${event.data['eventType']}");
print("Event data: ${event.data['eventData']}");
}
});
copied to clipboard
The Hello-Identify-Identified process can also be done manually when connecting if auto is set to false when using OBSWebSocket.connect or OBSWebSocket.connectUri.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.