コード例 #1
0
        private void onRecordingStateChange(ObsWebSocket sender, OutputState newState)
        {
            string state = "";

            switch (newState)
            {
            case OutputState.Starting:
                state = "Recording starting...";
                break;

            case OutputState.Started:
                state = "Stop recording";
                break;

            case OutputState.Stopping:
                state = "Recording stopping...";
                break;

            case OutputState.Stopped:
                state = "Start recording";
                break;

            default:
                state = "State unknown";
                break;
            }

            BeginInvoke((MethodInvoker) delegate
            {
                btnToggleRecording.Text = state;
            });
        }
コード例 #2
0
 private void onSceneChange(ObsWebSocket sender, string newSceneName)
 {
     BeginInvoke((MethodInvoker) delegate
     {
         tbCurrentScene.Text = newSceneName;
     });
 }
コード例 #3
0
 private void onTransitionDurationChange(ObsWebSocket sender, int newDuration)
 {
     BeginInvoke((MethodInvoker) delegate
     {
         tbTransitionDuration.Value = newDuration;
     });
 }
コード例 #4
0
 private void onTransitionChange(ObsWebSocket sender, string newTransitionName)
 {
     BeginInvoke((MethodInvoker) delegate
     {
         tbTransition.Text = newTransitionName;
     });
 }
コード例 #5
0
ファイル: ObsClient.cs プロジェクト: rht341/Fritz.StreamTools
        /// <summary>
        /// Establish a connection to OBS
        /// </summary>
        /// <param name="port"></param>
        /// <returns></returns>
        public Task Connect()
        {
            _OBS = new ObsWebSocket();
            _OBS.Connect($"ws://{_IpAddress}", "");

            return(Task.CompletedTask);
        }
コード例 #6
0
 private static void OnStreamData(ObsWebSocket sender, StreamStatus data)
 {
     App.Current.Dispatcher.Invoke(() =>
     {
         MainWindow.Form.ObsState_TotalStream.Content = data.TotalStreamTime.ToString() + " sec";
         MainWindow.Form.ObsState_FPS.Content         = data.FPS.ToString() + " FPS";
         MainWindow.Form.ObsState_Strain.Content      = (data.Strain * 100).ToString() + " %";
         MainWindow.Form.ObsState_DropFrames.Content  = data.DroppedFrames.ToString();
         MainWindow.Form.ObsState_TotalFrames.Content = data.TotalFrames.ToString();
     });
 }
コード例 #7
0
ファイル: Form1.cs プロジェクト: Conripi/TailsObs
 private void onStreamData(ObsWebSocket sender, StreamStatus data)
 {
     BeginInvoke((MethodInvoker)delegate {
         txtStreamTime.Text = data.TotalStreamTime.ToString() + " sec";
         txtKbitsSec.Text = data.KbitsPerSec.ToString() + " kbit/s";
         txtBytesSec.Text = data.BytesPerSec.ToString() + " bytes/s";
         txtFramerate.Text = data.FPS.ToString() + " FPS";
         txtDroppedFrames.Text = data.DroppedFrames.ToString();
         txtTotalFrames.Text = data.TotalFrames.ToString();
     });
 }
コード例 #8
0
 private void onSceneChange(ObsWebSocket sender, string newSceneName)
 {
     BeginInvoke((MethodInvoker) delegate
     {
         lblCurrentScene.Text = newSceneName;
     });
     if (!mappings.ContainsKey(newSceneName))
     {
         mappings[newSceneName] = 0;
     }
     sendShureMessage("< SET LED_COLOR_UNMUTED " + cmboColours.Items[mappings[newSceneName]] + " >");
 }
コード例 #9
0
        protected virtual void Dispose(bool disposing)
        {
            if (!_DisposedValue)
            {
                if (disposing)
                {
                    // TODO: dispose managed state (managed objects)
                }

                _OBS.Disconnect();
                _OBS           = null;
                _DisposedValue = true;
            }
        }
コード例 #10
0
        protected virtual void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    // TODO: dispose managed state (managed objects)
                }

                obsWebSocket.Disconnect();
                obsWebSocket  = null;
                disposedValue = true;
            }
        }
コード例 #11
0
        private static async Task Main(string[] args)
        {
            Settings = SettingLoader.Load();

            SetTimer();

            ObsWebSocket.Connected    += ObsWebSocket_Connected;
            ObsWebSocket.Disconnected += ObsWebSocket_Disconnected;

            ObsWebSocket.Connect(Settings.Url, Settings.Password);

            await ConsoleHost.WaitAsync();

            ObsWebSocket.Disconnect();
コード例 #12
0
 private void UpdateHeartbeat(ObsWebSocket sender, Heartbeat heartbeat)
 {
     DataModel.CurrentProfile    = heartbeat.CurrentProfile;
     DataModel.CurrentScene      = heartbeat.CurrentScene;
     DataModel.Streaming         = heartbeat.Streaming;
     DataModel.TotalStreamTime   = heartbeat.TotalStreamTime;
     DataModel.TotalStreamBytes  = heartbeat.TotalStreamBytes;
     DataModel.TotalStreamFrames = heartbeat.TotalStreamFrames;
     DataModel.Recording         = heartbeat.Recording;
     DataModel.Paused            = heartbeat.Paused;
     DataModel.TotalRecordTime   = heartbeat.TotalRecordTime;
     DataModel.TotalTecordBytes  = heartbeat.TotalTecordBytes;
     DataModel.TotalRecordFrames = heartbeat.TotalRecordFrames;
     DataModel.Stats             = heartbeat.Stats;
 }
コード例 #13
0
        public ObsManager(
            ILogger logger,
            string serverIp,
            int port,
            string password = "")
        {
            _serverIp = serverIp;
            _port     = port;
            _password = password;
            _logger   = logger;

            Obs = new ObsWebSocket()
            {
                Timeout = TimeSpan.FromMinutes(1)
            };
            Obs.Disconnected += OnDisconnected;
            Obs.OBSExit      += OnObsExit;
        }
コード例 #14
0
        public override void Enable()
        {
            _obs = new ObsWebSocket();

            try
            {
                _obs.Connect(OBS_URI, OBS_PASSWORD);
                _obs.Api.SetHeartbeat(true);
                _obs.Heartbeat += UpdateHeartbeat;

                DataModel.IsConnected = true;
            }
            catch
            {
                DataModel.IsConnected = false;
                //logger
            }
        }
コード例 #15
0
ファイル: Form1.cs プロジェクト: Conripi/TailsObs
        public tailobs()
        {
            InitializeComponent();
            _obs = new ObsWebSocket();

            //initialize
            UrlTextbox.Text = Properties.Settings.Default.obsurl;
            PasswordTextbox.Text = Properties.Settings.Default.obspassword;
            ExtensionTimeTextbox.Text = Properties.Settings.Default.RecTime.ToString();
            AddExtensionTimeTextbox.Text = Properties.Settings.Default.AddTime.ToString();

            RefreshControlsStatus();
            ReloadAddTime();

            _obs.RecordingStateChanged += onRecordingStateChange;
            _obs.StreamingStateChanged += onStreamingStateChange;
            _obs.StreamStatus += onStreamData;

        }
コード例 #16
0
        public MainWindow()
        {
            InitializeComponent();
            _obs = new ObsWebSocket();

            _obs.Connected    += onConnect;
            _obs.Disconnected += onDisconnect;

            _obs.SceneChanged              += onSceneChange;
            _obs.SceneCollectionChanged    += onSceneColChange;
            _obs.ProfileChanged            += onProfileChange;
            _obs.TransitionChanged         += onTransitionChange;
            _obs.TransitionDurationChanged += onTransitionDurationChange;

            _obs.StreamingStateChanged += onStreamingStateChange;
            _obs.RecordingStateChanged += onRecordingStateChange;

            _obs.StreamStatus += onStreamData;
        }
コード例 #17
0
ファイル: Program.cs プロジェクト: frederikkehlet/OBS_ML
        static void Main(string[] args)
        {
            var _obs = new ObsWebSocket();

            _obs.Connect("ws://127.0.0.1:4444", "");

            var settings = _obs.Api.GetSourceSettings("PictureOverlay");

            var currentDir = Directory.GetCurrentDirectory();
            var imagesDir  = Path.GetFullPath(Path.Combine(currentDir, @"..\..\..\..\Images"));
            var imageName  = "check";
            var filePath   = $"{imagesDir}/{imageName}.png".Replace(@"\", @"/");

            string json = "{\"file\": \"" + filePath + "\"}";

            JObject obj = JObject.Parse(json);

            _obs.Api.SetSourceSettings("PictureOverlay", new JObject(obj));

            Console.ReadLine();
        }
コード例 #18
0
ファイル: Form1.cs プロジェクト: Conripi/TailsObs
        //Streaminging method
        private void onStreamingStateChange(ObsWebSocket sender, OutputState newState)
        {
            string state = "";
            string btnstate = "";

            switch (newState) {
                case OutputState.Starting:
                    state = "配信開始中...";
                    btnstate = "開始中...";
                    break;

                case OutputState.Started:
                    state = "配信中";
                    btnstate = "配信停止";
                    break;

                case OutputState.Stopping:
                    state = "配信停止中...";
                    btnstate = "停止中...";

                    ResetStreamingStateText();

                    break;

                case OutputState.Stopped:
                    state = "停止";
                    btnstate = "配信開始";
                    break;

                default:
                    state = "不明";
                    break;
            }

            BeginInvoke((MethodInvoker)delegate {
                streamingStatus.Text = state;
                streamingbtn.Text = btnstate;
                if (state == "不明") streamingbtn.Enabled = false;
            });
        }
コード例 #19
0
        private void onStreamingStateChange(ObsWebSocket sender, OutputState newState)
        {
            string state = "";

            switch (newState)
            {
            case OutputState.Starting:
                state = "Stream starting...";
                break;

            case OutputState.Started:
                state = "Stop streaming";
                BeginInvoke((MethodInvoker) delegate
                {
                    gbStatus.Enabled = true;
                });
                break;

            case OutputState.Stopping:
                state = "Stream stopping...";
                break;

            case OutputState.Stopped:
                state = "Start streaming";
                BeginInvoke((MethodInvoker) delegate
                {
                    gbStatus.Enabled = false;
                });
                break;

            default:
                state = "State unknown";
                break;
            }

            BeginInvoke((MethodInvoker) delegate
            {
                btnToggleStreaming.Text = state;
            });
        }
コード例 #20
0
        private void onRecordingStateChange(ObsWebSocket sender, OutputState newState)
        {
            string state = "";

            switch (newState)
            {
            case OutputState.Starting:
                state = "Recording starting...";
                break;

            case OutputState.Started:
                state = "Recording Started";
                sendShureMessage("< SET LED_BRIGHTNESS 5 >");
                BeginInvoke((MethodInvoker) delegate
                {
                    chkRecording.Checked = true;
                });
                break;

            case OutputState.Stopping:
                state = "Recording stopping...";
                break;

            case OutputState.Stopped:
                state = "Recording Stopped";
                sendShureMessage("< SET LED_BRIGHTNESS 0 >");
                BeginInvoke((MethodInvoker) delegate
                {
                    chkRecording.Checked = false;
                });
                break;

            default:
                state = "State unknown";
                break;
            }
            Console.WriteLine(state);
        }
コード例 #21
0
        public static void Close()
        {
            if (_obs == null || !_running)
            {
                return;
            }

            try
            {
                _thread?.Abort();
            }
            catch
            { }
            _thread = null;
            try
            {
                _obs?.Disconnect();
            }
            catch
            { }
            _obs     = null;
            _running = false;
        }
コード例 #22
0
        public static void Open()
        {
            if (_obs != null || _running)
            {
                return;
            }

            _running = true;

            _obs = new ObsWebSocket();

            _obs.StreamStatus += OnStreamData;

            try
            {
                _connecting = true;
                _tip        = false;
                MainWindow.Form.AddInfo("尝试连接OBS中...");
                _ctip = true;
                _obs.Connect(connectTo, connectPassword);
                _thread = new Thread(CheckConnection);
                _thread.Start();
            }
            catch (AuthFailureException)
            {
                MainWindow.Form.AddInfo(InfoType.ERROR, "身份验证失败,请确认OBS Studio的WebSocket设置密码为空");
            }
            catch (ErrorResponseException ex)
            {
                MainWindow.Form.AddInfo(InfoType.ERROR, "尝试连接OBS时发生错误: " + ex.Message);
            }
            finally
            {
                _connecting = false;
            }
        }
コード例 #23
0
ファイル: OBSConnection.cs プロジェクト: abaitken/button-deck
 public OBSConnection()
 {
     var obs    = new ObsWebSocket();
     var obsApi = new ObsWebSocketApi(obs);
     // TODO
 }
コード例 #24
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="settings">Settings to connect</param>
 public ObsWebSocketClient()
 {
     this.obsWebSocket = new ObsWebSocket(); // Always not null
 }
コード例 #25
0
ファイル: Form1.cs プロジェクト: Conripi/TailsObs
        //Recording method
        private void onRecordingStateChange(ObsWebSocket sender, OutputState newState)
        {
            try {
                var state = "";
                var btnstate = "";

                switch (newState) {
                    case OutputState.Starting:
                        state = "録画開始中...";
                        btnstate = "開始中...";
                        break;

                    case OutputState.Started:
                        state = "録画中";
                        btnstate = "録画停止";
                        //Start Timer
                        BeginInvoke((MethodInvoker)delegate {
                            //LeftStoppingTimeSec = 5;
                            LimitTimer.Start();
                            IsRecording = true;
                        });

                        break;

                    case OutputState.Stopping:
                        state = "録画停止中...";
                        btnstate = "停止中...";

                        break;

                    case OutputState.Stopped:
                        state = "停止";
                        btnstate = "録画開始";

                        //Reset AddTme
                        BeginInvoke((MethodInvoker)delegate {
                            LimitTimer.Stop();
                            ReloadAddTime();
                            IsRecording = false;
                        });
                        break;

                    default:
                        state = "不明";
                        //Reset AddTme
                        BeginInvoke((MethodInvoker)delegate {
                            LimitTimer.Stop();
                            ReloadAddTime();
                        });

                        break;
                }

                BeginInvoke((MethodInvoker)delegate {
                    RecordingStatus.Text = state;
                    recordbtn.Text = btnstate;
                    if (state == "不明") recordbtn.Enabled = false;
                });

            }
            catch { }

        }
コード例 #26
0
 public Task Connect()
 {
     _OBS = new ObsWebSocket();
     _OBS.Connect($"ws://127.0.0.1:4444", "");
     return(Task.CompletedTask);
 }
コード例 #27
0
 private void OnSceneChanged(ObsWebSocket sender, string newSceneName)
 {
     throw new NotImplementedException();
 }