private void Exit() { try { SaveObjects(""); } catch (Exception ex) { LogExceptionToFile(ex); } _shuttingDown = true; WsWrapper.Disconnect(); try { MWS.StopServer(); } catch (Exception ex) { LogExceptionToFile(ex); } ThreadKillDelay = 3000; _houseKeepingTimer?.Stop(); _updateTimer?.Stop(); _tmrJoystick?.Stop(); if (Conf.ShowMediaPanel) Conf.MediaPanelSize = splitContainer1.SplitterDistance + "x" + splitContainer2.SplitterDistance; if (Conf.BalloonTips) { if (Conf.BalloonTips) { notifyIcon1.BalloonTipText = LocRm.GetString("ShuttingDown"); notifyIcon1.ShowBalloonTip(1500); } } _closing = true; try { SaveConfig(); } catch (Exception ex) { LogExceptionToFile(ex); } try { if (_talkSource != null) { _talkSource.Stop(); _talkSource = null; } } catch (Exception ex) { LogExceptionToFile(ex); } try { if (_talkTarget != null) { _talkTarget.Stop(); _talkTarget = null; } } catch (Exception ex) { LogExceptionToFile(ex); } try { RemoveObjects(); } catch (Exception ex) { LogExceptionToFile(ex); } try { File.WriteAllText(Program.AppDataPath + "exit.txt", "OK"); } catch (Exception ex) { LogExceptionToFile(ex); } if (StorageThreadRunning) { try { _storageThread.Join(ThreadKillDelay); } catch { } } WriteLogs(); }
public void TalkTo(CameraWindow cw, bool talk) { if (string.IsNullOrEmpty(Conf.TalkMic)) return; if (_talkSource != null) { _talkSource.Stop(); _talkSource = null; } if (_talkTarget != null) { _talkTarget.Stop(); _talkTarget = null; } if (!talk) { if (cw.VolumeControl != null) { cw.VolumeControl.Listening = false; } return; } Application.DoEvents(); TalkCamera = cw; _talkSource = new TalkDeviceStream(Conf.TalkMic) {RecordingFormat = new WaveFormat(8000, 16, 1)}; _talkSource.AudioFinished += _talkSource_AudioFinished; if (!_talkSource.IsRunning) _talkSource.Start(); _talkTarget = TalkHelper.GetTalkTarget(cw.Camobject, _talkSource); _talkTarget.TalkStopped += TalkTargetTalkStopped; _talkTarget.Start(); //auto listen if (cw.VolumeControl != null) { cw.VolumeControl.Listening = true; } }
private void Exit() { if (_houseKeepingTimer != null) _houseKeepingTimer.Stop(); if (_updateTimer != null) _updateTimer.Stop(); _shuttingDown = true; if (Conf.ShowMediaPanel) Conf.MediaPanelSize = splitContainer1.SplitterDistance+"x"+splitContainer2.SplitterDistance; if (Conf.BalloonTips) { if (Conf.BalloonTips) { notifyIcon1.BalloonTipText = LocRm.GetString("ShuttingDown"); notifyIcon1.ShowBalloonTip(1500); } } _closing = true; try { SaveObjects(""); } catch (Exception ex) { Log.Error("",ex); } try { SaveConfig(); } catch (Exception ex) { Log.Error("",ex); } try { if (_talkSource != null) { _talkSource.Stop(); _talkSource = null; } } catch (Exception ex) { Log.Error("",ex); } try { if (_talkTarget != null) { _talkTarget.Stop(); _talkTarget = null; } } catch (Exception ex) { Log.Error("",ex); } try { RemoveObjects(); } catch (Exception ex) { Log.Error("",ex); } try { MWS.StopServer(); } catch (Exception ex) { Log.Error("",ex); } try { Application.DoEvents(); if (Conf.ServicesEnabled) { if (WsWrapper.WebsiteLive) { try { WsWrapper.Disconnect(); } catch { } } } } catch (Exception ex) { Log.Error("",ex); } try { File.WriteAllText(Program.AppDataPath + "exit.txt", "OK"); } catch (Exception ex) { Log.Error("",ex); } WriteLog(); }
public void TalkTo(CameraWindow cw, bool talk) { if (_talkSource != null) { _talkSource.Stop(); _talkSource = null; } if (_talkTarget != null) { _talkTarget.Stop(); _talkTarget = null; } if (!talk) { if (cw.VolumeControl != null) { cw.VolumeControl.Listening = false; } return; } Application.DoEvents(); TalkCamera = cw; _talkSource = new TalkDeviceStream(Conf.TalkMic) { RecordingFormat = new WaveFormat(8000, 16, 1) }; _talkSource.AudioSourceError += _talkSource_AudioSourceError; if (!_talkSource.IsRunning) _talkSource.Start(); switch (cw.Camobject.settings.audiomodel) { default: _talkTarget = new TalkFoscam(cw.Camobject.settings.audioip, cw.Camobject.settings.audioport, cw.Camobject.settings.audiousername, cw.Camobject.settings.audiopassword, _talkSource); break; case "iSpyServer": _talkTarget = new TalkiSpyServer(cw.Camobject.settings.audioip, cw.Camobject.settings.audioport, _talkSource); break; case "NetworkKinect": _talkTarget = new TalkNetworkKinect(cw.Camobject.settings.audioip, cw.Camobject.settings.audioport, _talkSource); break; case "Axis": _talkTarget = new TalkAxis(cw.Camobject.settings.audioip, cw.Camobject.settings.audioport, cw.Camobject.settings.audiousername, cw.Camobject.settings.audiopassword, _talkSource); break; } _talkTarget.TalkStopped += TalkTargetTalkStopped; _talkTarget.Start(); //auto listen if (cw.VolumeControl != null) { cw.VolumeControl.Listening = true; } }
private static void SynthToCam(string text, CameraWindow cw) { var synthFormat = new System.Speech.AudioFormat.SpeechAudioFormatInfo(System.Speech.AudioFormat.EncodingFormat.Pcm, 11025, 16, 1, 22100, 2, null); using (var synthesizer = new SpeechSynthesizer()) { using (var waveStream = new MemoryStream()) { //write some silence to the stream to allow camera to initialise properly var silence = new byte[1 * 22050]; waveStream.Write(silence, 0, silence.Count()); var pbuilder = new PromptBuilder(); var pStyle = new PromptStyle { Emphasis = PromptEmphasis.Strong, Rate = PromptRate.Slow, Volume = PromptVolume.ExtraLoud }; pbuilder.StartStyle(pStyle); pbuilder.StartParagraph(); pbuilder.StartVoice(VoiceGender.Male, VoiceAge.Adult, 2); pbuilder.StartSentence(); pbuilder.AppendText(text); pbuilder.EndSentence(); pbuilder.EndVoice(); pbuilder.EndParagraph(); pbuilder.EndStyle(); synthesizer.SetOutputToAudioStream(waveStream, synthFormat); synthesizer.Speak(pbuilder); synthesizer.SetOutputToNull(); //write some silence to the stream to allow camera to end properly waveStream.Write(silence, 0, silence.Count()); waveStream.Seek(0, SeekOrigin.Begin); ITalkTarget talkTarget = null; var ds = new DirectStream(waveStream) { RecordingFormat = new WaveFormat(11025, 16, 1) }; switch (cw.Camobject.settings.audiomodel) { case "Foscam": ds.Interval = 40; ds.PacketSize = 882; // (40ms packet at 22050 bytes per second) talkTarget = new TalkFoscam(cw.Camobject.settings.audioip, cw.Camobject.settings.audioport, cw.Camobject.settings.audiousername, cw.Camobject.settings.audiopassword, ds); break; case "NetworkKinect": ds.Interval = 40; ds.PacketSize = 882; talkTarget = new TalkNetworkKinect(cw.Camobject.settings.audioip, cw.Camobject.settings.audioport, ds); break; case "iSpyServer": ds.Interval = 40; ds.PacketSize = 882; talkTarget = new TalkiSpyServer(cw.Camobject.settings.audioip, cw.Camobject.settings.audioport, ds); break; case "Axis": talkTarget = new TalkAxis(cw.Camobject.settings.audioip, cw.Camobject.settings.audioport, cw.Camobject.settings.audiousername, cw.Camobject.settings.audiopassword, ds); break; default: //local playback talkTarget = new TalkLocal(ds); break; } ds.Start(); talkTarget.Start(); while (ds.IsRunning) { Thread.Sleep(100); } ds.Stop(); if (talkTarget != null) { talkTarget.Stop(); } talkTarget = null; ds = null; waveStream.Close(); } } }