-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathStudioSettings.cs
More file actions
94 lines (84 loc) · 2.54 KB
/
StudioSettings.cs
File metadata and controls
94 lines (84 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using PrompterOne.Core.Models.Streaming;
namespace PrompterOne.Core.Models.Workspace;
public enum CameraResolutionPreset
{
FullHd1080,
Hd720,
UltraHd4K,
Sd480
}
public enum CameraFrameRatePreset
{
Fps24,
Fps30,
Fps60
}
public enum StreamingOutputMode
{
VirtualCamera,
NdiOutput,
DirectRtmp,
LocalRecording
}
public enum StreamingResolutionPreset
{
FullHd1080p30,
FullHd1080p60,
Hd720p30,
UltraHd2160p30
}
public sealed record CameraStudioSettings(
string? DefaultCameraId = null,
CameraResolutionPreset Resolution = CameraResolutionPreset.FullHd1080,
CameraFrameRatePreset FrameRate = CameraFrameRatePreset.Fps30,
bool MirrorCamera = false,
bool AutoStartOnRead = true);
public sealed record MicrophoneStudioSettings(
string? DefaultMicrophoneId = null,
int InputLevelPercent = 65,
bool NoiseSuppression = true,
bool EchoCancellation = true);
public sealed record StreamStudioSettings(
StreamingOutputMode OutputMode = StreamingOutputMode.VirtualCamera,
StreamingResolutionPreset OutputResolution = StreamingResolutionPreset.FullHd1080p30,
int BitrateKbps = 6000,
bool ShowTextOverlay = true,
bool IncludeCameraInOutput = true,
IReadOnlyList<StreamingProfile>? ExternalDestinations = null,
IReadOnlyList<GoLiveDestinationSourceSelection>? DestinationSourceSelections = null,
string RtmpUrl = "",
string StreamKey = "",
bool ObsVirtualCameraEnabled = false,
bool NdiOutputEnabled = false,
bool LocalRecordingEnabled = false,
bool LiveKitEnabled = false,
string LiveKitServerUrl = "",
string LiveKitRoomName = "",
string LiveKitToken = "",
bool VdoNinjaEnabled = false,
string VdoNinjaRoomName = "",
string VdoNinjaPublishUrl = "",
bool YoutubeEnabled = false,
string YoutubeRtmpUrl = "",
string YoutubeStreamKey = "",
bool TwitchEnabled = false,
string TwitchRtmpUrl = "",
string TwitchStreamKey = "",
bool CustomRtmpEnabled = false,
string CustomRtmpName = StreamingDefaults.CustomTargetName,
string CustomRtmpUrl = "",
string CustomRtmpStreamKey = "");
public sealed record StudioSettings(
CameraStudioSettings Camera,
MicrophoneStudioSettings Microphone,
StreamStudioSettings Streaming)
{
public static StudioSettings Default { get; } = new(
new CameraStudioSettings(),
new MicrophoneStudioSettings(),
new StreamStudioSettings());
}
public static class StreamingDefaults
{
public const string CustomTargetName = "Custom RTMP";
}