From f078a100287f456c6a0562b8c9615f63562b0845 Mon Sep 17 00:00:00 2001 From: Palakis Date: Sun, 19 Mar 2017 23:50:23 +0100 Subject: [PATCH] New request types for streaming and recording control `StartStreaming`, `StopStreaming`, `StartRecording` and `StopRecording` --- PROTOCOL.md | 41 +++++++++++++++++++++++++++++++++++++++++ WSRequestHandler.cpp | 36 ++++++++++++++++++++++++++++++++++++ WSRequestHandler.h | 8 ++++---- 3 files changed, 81 insertions(+), 4 deletions(-) diff --git a/PROTOCOL.md b/PROTOCOL.md index 9fc2db72..94104168 100644 --- a/PROTOCOL.md +++ b/PROTOCOL.md @@ -45,6 +45,10 @@ The protocol in general is based on the OBS Remote protocol created by Bill Hami - ["SetSourceRender"](#setsourcerender) - ["StartStopStreaming"](#startstopstreaming) - ["StartStopRecording"](#startstoprecording) + - ["StartStreaming"](#startstreaming) + - ["StopStreaming"](#stopstreaming) + - ["StartRecording"](#startrecording) + - ["StopRecording"](#stoprecording) - ["GetStreamingStatus"](#getstreamingstatus) - ["GetTransitionList"](#gettransitionlist) - ["GetCurrentTransition"](#getcurrenttransition) @@ -56,6 +60,7 @@ The protocol in general is based on the OBS Remote protocol created by Bill Hami - ["ToggleMute"](#togglemute) - ["SetSceneItemPosition"](#setsceneitemposition) - ["SetSceneItemTransform"](#setsceneitemtransform) + - ["SetSceneItemCrop"](#setsceneitemcrop) - ["SetCurrentSceneCollection"](#setcurrentscenecollection) - ["GetCurrentSceneCollection"](#getcurrentscenecollection) - ["ListSceneCollections"](#listscenecollections) @@ -346,6 +351,42 @@ __Response__ : always OK. No additional fields. --- +#### "StartStreaming" +Start streaming. + +__Request fields__ : none +__Response__ : always OK. No additional fields. +*New in OBS Studio* + +--- + +#### "StopStreaming" +Stop streaming. + +__Request fields__ : none +__Response__ : always OK. No additional fields. +*New in OBS Studio* + +--- + +#### "StartRecording" +Start recording. + +__Request fields__ : none +__Response__ : always OK. No additional fields. +*New in OBS Studio* + +--- + +#### "StopRecording" +Stop recording. + +__Request fields__ : none +__Response__ : always OK. No additional fields. +*New in OBS Studio* + +--- + #### "GetStreamingStatus" Get current streaming and recording status. diff --git a/WSRequestHandler.cpp b/WSRequestHandler.cpp index 2b907ef2..921bd8cc 100644 --- a/WSRequestHandler.cpp +++ b/WSRequestHandler.cpp @@ -46,6 +46,10 @@ WSRequestHandler::WSRequestHandler(QWebSocket *client) : messageMap["GetStreamingStatus"] = WSRequestHandler::HandleGetStreamingStatus; messageMap["StartStopStreaming"] = WSRequestHandler::HandleStartStopStreaming; messageMap["StartStopRecording"] = WSRequestHandler::HandleStartStopRecording; + messageMap["StartStreaming"] = WSRequestHandler::HandleStartStreaming; + messageMap["StopStreaming"] = WSRequestHandler::HandleStopStreaming; + messageMap["StartRecording"] = WSRequestHandler::HandleStartRecording; + messageMap["StopRecording"] = WSRequestHandler::HandleStopRecording; messageMap["GetTransitionList"] = WSRequestHandler::HandleGetTransitionList; messageMap["GetCurrentTransition"] = WSRequestHandler::HandleGetCurrentTransition; @@ -325,6 +329,38 @@ void WSRequestHandler::HandleStartStopRecording(WSRequestHandler *owner) owner->SendOKResponse(); } +void WSRequestHandler::HandleStartStreaming(WSRequestHandler *owner) +{ + if (obs_frontend_streaming_active() == false) + obs_frontend_streaming_start(); + + owner->SendOKResponse(); +} + +void WSRequestHandler::HandleStopStreaming(WSRequestHandler *owner) +{ + if (obs_frontend_streaming_active() == true) + obs_frontend_streaming_stop(); + + owner->SendOKResponse(); +} + +void WSRequestHandler::HandleStartRecording(WSRequestHandler *owner) +{ + if (obs_frontend_recording_active() == false) + obs_frontend_recording_start(); + + owner->SendOKResponse(); +} + +void WSRequestHandler::HandleStopRecording(WSRequestHandler *owner) +{ + if (obs_frontend_recording_active() == true) + obs_frontend_recording_stop(); + + owner->SendOKResponse(); +} + void WSRequestHandler::HandleGetTransitionList(WSRequestHandler *owner) { obs_source_t *current_transition = obs_frontend_get_current_transition(); diff --git a/WSRequestHandler.h b/WSRequestHandler.h index 0da271b3..1ad4e792 100644 --- a/WSRequestHandler.h +++ b/WSRequestHandler.h @@ -61,11 +61,11 @@ class WSRequestHandler : public QObject static void HandleGetStreamingStatus(WSRequestHandler *owner); static void HandleStartStopStreaming(WSRequestHandler *owner); - // TODO : StartStreaming - // TODO : StopStreaming static void HandleStartStopRecording(WSRequestHandler *owner); - // TODO : StartRecording - // TODO : StopRecording + static void HandleStartStreaming(WSRequestHandler *owner); + static void HandleStopStreaming(WSRequestHandler *owner); + static void HandleStartRecording(WSRequestHandler *owner); + static void HandleStopRecording(WSRequestHandler *owner); static void HandleGetTransitionList(WSRequestHandler *owner); static void HandleGetCurrentTransition(WSRequestHandler *owner);