Skip to content

Commit 1191ee8

Browse files
authored
Merge pull request #13 from yourealwaysbe/recording
Improved support for streaming and recording
2 parents c624909 + d31361b commit 1191ee8

File tree

8 files changed

+123
-0
lines changed

8 files changed

+123
-0
lines changed

src/main/java/net/twasi/obsremotejava/OBSCommunicator.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,14 @@
6565
import net.twasi.obsremotejava.requests.SetTransitionDuration.SetTransitionDurationResponse;
6666
import net.twasi.obsremotejava.requests.SetVolume.SetVolumeRequest;
6767
import net.twasi.obsremotejava.requests.SetVolume.SetVolumeResponse;
68+
import net.twasi.obsremotejava.requests.StartRecording.StartRecordingRequest;
69+
import net.twasi.obsremotejava.requests.StartRecording.StartRecordingResponse;
6870
import net.twasi.obsremotejava.requests.StartReplayBuffer.StartReplayBufferRequest;
6971
import net.twasi.obsremotejava.requests.StartReplayBuffer.StartReplayBufferResponse;
7072
import net.twasi.obsremotejava.requests.StartStreaming.StartStreamingRequest;
7173
import net.twasi.obsremotejava.requests.StartStreaming.StartStreamingResponse;
74+
import net.twasi.obsremotejava.requests.StopRecording.StopRecordingRequest;
75+
import net.twasi.obsremotejava.requests.StopRecording.StopRecordingResponse;
7276
import net.twasi.obsremotejava.requests.StopReplayBuffer.StopReplayBufferRequest;
7377
import net.twasi.obsremotejava.requests.StopReplayBuffer.StopReplayBufferResponse;
7478
import net.twasi.obsremotejava.requests.StopStreaming.StopStreamingRequest;
@@ -108,10 +112,14 @@ public class OBSCommunicator {
108112
private ErrorCallback onError;
109113

110114
// Optional callbacks
115+
private Callback onRecordingStarted;
116+
private Callback onRecordingStopped;
111117
private Callback onReplayStarted;
112118
private Callback onReplayStarting;
113119
private Callback onReplayStopped;
114120
private Callback onReplayStopping;
121+
private Callback onStreamStarted;
122+
private Callback onStreamStopped;
115123
private Callback onSwitchScenes;
116124
private Callback onScenesChanged;
117125
private Callback onTransitionBegin;
@@ -295,6 +303,22 @@ private void processIncomingEvent(String msg, EventType eventType) {
295303
onTransitionEnd.run(new Gson().fromJson(msg, TransitionEndResponse.class));
296304
}
297305
break;
306+
case RecordingStarted:
307+
if (onRecordingStarted != null)
308+
onRecordingStarted.run(null);
309+
break;
310+
case RecordingStopped:
311+
if (onRecordingStopped != null)
312+
onRecordingStopped.run(null);
313+
break;
314+
case StreamStarted:
315+
if (onStreamStarted != null)
316+
onStreamStarted.run(null);
317+
break;
318+
case StreamStopped:
319+
if (onStreamStopped != null)
320+
onStreamStopped.run(null);
321+
break;
298322
}
299323
}
300324

@@ -385,6 +409,22 @@ public void registerOnTransitionEnd(Callback onTransitionEnd) {
385409
this.onTransitionEnd = onTransitionEnd;
386410
}
387411

412+
public void registerOnRecordingStarted(Callback onRecordingStarted) {
413+
this.onRecordingStarted = onRecordingStarted;
414+
}
415+
416+
public void registerOnRecordingStopped(Callback onRecordingStopped) {
417+
this.onRecordingStopped = onRecordingStopped;
418+
}
419+
420+
public void registerOnStreamStarted(Callback onStreamStarted) {
421+
this.onStreamStarted = onStreamStarted;
422+
}
423+
424+
public void registerOnStreamStopped(Callback onStreamStopped) {
425+
this.onStreamStopped = onStreamStopped;
426+
}
427+
388428
public void getScenes(Callback callback) {
389429
session.getRemote().sendStringByFuture(new Gson().toJson(new GetSceneListRequest(this)));
390430
callbacks.put(GetSceneListResponse.class, callback);
@@ -440,6 +480,20 @@ public void setSourceSettings(String sourceName, Map<String, Object> settings, C
440480
callbacks.put(SetSourceSettingsResponse.class, callback);
441481
}
442482

483+
public void startRecording(Callback callback) {
484+
StartRecordingRequest request = new StartRecordingRequest(this);
485+
486+
session.getRemote().sendStringByFuture(new Gson().toJson(request));
487+
callbacks.put(StartRecordingResponse.class, callback);
488+
}
489+
490+
public void stopRecording(Callback callback) {
491+
StopRecordingRequest request = new StopRecordingRequest(this);
492+
493+
session.getRemote().sendStringByFuture(new Gson().toJson(request));
494+
callbacks.put(StopRecordingResponse.class, callback);
495+
}
496+
443497
public void getStreamingStatus(Callback callback) {
444498
GetStreamingStatusRequest request = new GetStreamingStatusRequest(this);
445499
session.getRemote().sendStringByFuture(new Gson().toJson(request));

src/main/java/net/twasi/obsremotejava/OBSRemoteController.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,14 @@ public void registerConnectionFailedCallback(StringCallback onConnectionFailed)
137137
communicator.registerOnConnectionFailed(onConnectionFailed);
138138
}
139139

140+
public void registerRecordingStartedCallback(Callback onRecordingStarted) {
141+
communicator.registerOnRecordingStarted(onRecordingStarted);
142+
}
143+
144+
public void registerRecordingStoppedCallback(Callback onRecordingStopped) {
145+
communicator.registerOnRecordingStopped(onRecordingStopped);
146+
}
147+
140148
public void registerReplayStartedCallback(Callback onReplayStarted) {
141149
communicator.registerOnReplayStarted(onReplayStarted);
142150
}
@@ -153,6 +161,14 @@ public void registerReplayStoppingCallback(Callback onReplayStopping) {
153161
communicator.registerOnReplayStopping(onReplayStopping);
154162
}
155163

164+
public void registerStreamStartedCallback(Callback onRecordingStarted) {
165+
communicator.registerOnStreamStarted(onRecordingStarted);
166+
}
167+
168+
public void registerStreamStoppedCallback(Callback onRecordingStopped) {
169+
communicator.registerOnStreamStopped(onRecordingStopped);
170+
}
171+
156172
public void registerSwitchScenesCallback(Callback onSwitchScenes) {
157173
communicator.registerOnSwitchScenes(onSwitchScenes);
158174
}
@@ -227,6 +243,14 @@ public void stopStreaming(Callback callback) {
227243
communicator.stopStreaming(callback);
228244
}
229245

246+
public void startRecording(Callback callback) {
247+
communicator.startRecording(callback);
248+
}
249+
250+
public void stopRecording(Callback callback) {
251+
communicator.stopRecording(callback);
252+
}
253+
230254
public void listProfiles(Callback callback) {
231255
communicator.listProfiles(callback);
232256
}

src/main/java/net/twasi/obsremotejava/events/EventType.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package net.twasi.obsremotejava.events;
22

33
public enum EventType {
4+
RecordingStarted,
5+
RecordingStopped,
46
ReplayStarting,
57
ReplayStarted,
68
ReplayStopping,
79
ReplayStopped,
10+
StreamStarted,
11+
StreamStopped,
812
SwitchScenes,
913
ScenesChanged,
1014
TransitionBegin,

src/main/java/net/twasi/obsremotejava/requests/RequestType.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public enum RequestType {
2727
SetSourceSettings,
2828

2929
GetStreamingStatus,
30+
StartRecording,
31+
StopRecording,
3032
StartStreaming,
3133
StopStreaming,
3234

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package net.twasi.obsremotejava.requests.StartRecording;
2+
3+
import net.twasi.obsremotejava.OBSCommunicator;
4+
import net.twasi.obsremotejava.requests.BaseRequest;
5+
import net.twasi.obsremotejava.requests.RequestType;
6+
7+
public class StartRecordingRequest extends BaseRequest {
8+
9+
public StartRecordingRequest(OBSCommunicator com) {
10+
super(RequestType.StartRecording);
11+
12+
com.messageTypes.put(getMessageId(), StartRecordingResponse.class);
13+
}
14+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package net.twasi.obsremotejava.requests.StartRecording;
2+
3+
import net.twasi.obsremotejava.requests.ResponseBase;
4+
5+
public class StartRecordingResponse extends ResponseBase {
6+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package net.twasi.obsremotejava.requests.StopRecording;
2+
3+
import net.twasi.obsremotejava.OBSCommunicator;
4+
import net.twasi.obsremotejava.requests.BaseRequest;
5+
import net.twasi.obsremotejava.requests.RequestType;
6+
7+
public class StopRecordingRequest extends BaseRequest {
8+
public StopRecordingRequest(OBSCommunicator com) {
9+
super (RequestType.StopRecording);
10+
11+
com.messageTypes.put(getMessageId(), StopRecordingResponse.class);
12+
}
13+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package net.twasi.obsremotejava.requests.StopRecording;
2+
3+
import net.twasi.obsremotejava.requests.ResponseBase;
4+
5+
public class StopRecordingResponse extends ResponseBase {
6+
}

0 commit comments

Comments
 (0)