void call_CallStateChanged(object sender, Ozeki.VoIP.VoIPEventArgs<CallState> e) { if(e.Item.IsInCall()) { if(firstInCall) { try { entry.State = WorkState.InProgress; firstInCall = false; ringingTimer.Elapsed -= ringingTimer_Elapsed; waveStreamPlayback = new WaveStreamPlayback(entry.SoundPath); call.ConnectAudioSender(waveStreamPlayback); waveStreamPlayback.Stopped += waveStreamPlayback_Stopped; waveStreamPlayback.StartStreaming(); progressTimer.Start(); } catch (Exception ex) { OnWorkCompleted(WorkState.FileError); } } } else if(e.Item.IsCallEnded()) { OnWorkCompleted(WorkState.HungUpByRemote); } }
void call_CallStateChanged(object sender, Ozeki.VoIP.VoIPEventArgs <CallState> e) { if (e.Item.IsInCall()) { if (firstInCall) { try { entry.State = WorkState.InProgress; firstInCall = false; ringingTimer.Elapsed -= ringingTimer_Elapsed; waveStreamPlayback = new WaveStreamPlayback(entry.SoundPath); call.ConnectAudioSender(waveStreamPlayback); waveStreamPlayback.Stopped += waveStreamPlayback_Stopped; waveStreamPlayback.StartStreaming(); progressTimer.Start(); } catch (Exception ex) { OnWorkCompleted(WorkState.FileError); } } } else if (e.Item.IsCallEnded()) { OnWorkCompleted(WorkState.HungUpByRemote); } }
internal void SetRingtone(string filePath) { bool isStreaming = false; // dispose previous if (ringtonePlayer != null) { isStreaming = ringtonePlayer.IsStreaming; audioConnector.Disconnect(ringtonePlayer, speakerMixer); ringtonePlayer.Dispose(); ringtonePlayer = null; } // create new ringtonePlayer = new WaveStreamPlayback(filePath, true, true); audioConnector.Connect(ringtonePlayer, speakerMixer); // start if necessary if (isStreaming) { ringtonePlayer.StartStreaming(); } }
public override void StartNarration(string audiofile) { currentAudioFile = audiofile; waveStreamPlayback = new WaveStreamPlayback(audiofile); waveStreamPlayback.Stopped += waveStreamPlayback_Stopped; OnNarrationStarting(); waveStreamPlayback.StartStreaming(); }
/// <summary> /// Initializes the audio handlers (microphone, speaker, DTMF player etc.). /// </summary> private void InitAudio() { // ----- CREATE ----- // devices Microphone = Microphone.GetDefaultDevice(); Speaker = Speaker.GetDefaultDevice(); // audio processors if (Microphone == null) { AudioEnhancer = new AudioQualityEnhancer(new AudioFormat()); } else { AudioEnhancer = new AudioQualityEnhancer(Microphone.MediaFormat); } AudioEnhancer.SetEchoSource(Speaker); _dtmfPlayer = new DtmfEventWavePlayer(); // ringtones var ringbackStream = LoadRingbackStream(); var ringtoneStream = LoadRingtoneStream(); _ringtonePlayer = new WaveStreamPlayback(ringtoneStream, true, false); _ringbackPlayer = new WaveStreamPlayback(ringbackStream, true, false); // mixers //outgoingDataMixer = new AudioForwarder(); //speakerMixer = new AudioForwarder(); //recordDataMixer = new AudioForwarder(); // phone handlers _phoneCallAudioSender = new PhoneCallAudioSender(); _phoneCallAudioReceiver = new PhoneCallAudioReceiver(); // ----- CONNECT ----- // connect outgoing //audioConnector.Connect(AudioEnhancer, outgoingDataMixer); //audioConnector.Connect(outgoingDataMixer, phoneCallAudioSender); //audioConnector.Connect(outgoingDataMixer, recordDataMixer); _audioConnector.Connect(AudioEnhancer, _phoneCallAudioSender); if (Microphone != null) { Microphone.LevelChanged += (Microphone_LevelChanged); _audioConnector.Connect(Microphone, AudioEnhancer); } // connect incoming if (Speaker != null) { Speaker.LevelChanged += (Speaker_LevelChanged); _audioConnector.Connect(_phoneCallAudioReceiver, Speaker); _audioConnector.Connect(_ringtonePlayer, Speaker); _audioConnector.Connect(_ringbackPlayer, Speaker); _audioConnector.Connect(_dtmfPlayer, Speaker); } }
/// <summary> /// Inicializar reproductor. /// </summary> void initStreamPlayback() { if (extTypeWav.Contains(extTypePlayer)) { wavPlayer = new WaveStreamPlayback(jobDataCommon.callServer.soundFile.targetPath); } else { mp3Player = new MP3StreamPlayback(jobDataCommon.callServer.soundFile.targetPath); } }
public bool MakeCall(Dictionary <string, string> pingData) { _log.Info("Beginning MakeCall"); _pingData = pingData; // Ensure the specified audio file is in the manifest Assembly assembly = Assembly.GetExecutingAssembly(); string resourceName = String.Format("Netopia.VOIPTester.Client.Resources.{0}", _config.GetStringValue("tonefile")); Stream resourceStream = assembly.GetManifestResourceStream(resourceName); // Console.WriteLine(String.Join("\n", assembly.GetManifestResourceNames())); if (resourceStream == null) { _log.Fatal(String.Format("Can't find embedded audio file {0}", resourceName)); return(false); } // Create the SIP client and register to the server _softPhone = SoftPhoneFactory.CreateSoftPhone(SoftPhoneFactory.GetLocalIP(), _config.GetIntValue("sip.min"), _config.GetIntValue("sip.max"), _config.GetIntValue("sip.port")); _phoneLine = _softPhone.CreatePhoneLine(new SIPAccount(true, _config.GetStringValue("sip.displayname"), _config.GetStringValue("sip.username"), _config.GetStringValue("sip.username"), _config.GetStringValue("sip.password"), _config.GetStringValue("sip.host")), new NatConfiguration(_config.GetStringValue("externalip"), true)); _phoneLine.PhoneLineStateChanged += PhoneLineStateChanged; _wavPlayback = new WaveStreamPlayback(resourceStream); _wavPlayback.Stopped += StreamingStopped; _connector.Connect(_wavPlayback, _callSender); // Register the SIP connection Register(); // Wait 3 seconds and check if the line is registered. If not, shut down. System.Threading.Thread.Sleep(3000); if (_phoneLine.LineState != PhoneLineState.RegistrationSucceeded) { _log.Error(String.Format("Phone Line is not registered. State is {0}. Exiting.", _phoneLine.LineState.ToString())); return(false); } lock (_sync) { // Wait for the defined MAX_CALL_LENGTH Monitor.Wait(_sync, MAX_CALL_LENGTH * 1000); } _log.Info("Completed call"); return(_complete); }
/// <summary> /// Loads a wav file for playback. /// </summary> public void LoadPlaybackWavFile(string filePath) { if (!initialized) { return; } if (wavPlayer != null) { audioConnector.Disconnect(wavPlayer, outgoingDataMixer); wavPlayer.Dispose(); wavRecorder = null; } wavPlayer = new WaveStreamPlayback(filePath, false, true); audioConnector.Connect(wavPlayer, outgoingDataMixer); }
/// <summary> /// Loads a wav file for playback. /// </summary> public void LoadPlaybackWavFile(string filePath) { if (!_initialized) { return; } if (_wavPlayer != null) { _audioConnector.Disconnect(_wavPlayer, _phoneCallAudioSender); _wavPlayer.Dispose(); _wavRecorder = null; } _wavPlayer = new WaveStreamPlayback(filePath, false, true); _audioConnector.Connect(_wavPlayer, _phoneCallAudioSender); }
internal void SetRingback(string filePath) { bool isStreaming = false; // dispose previous if (_ringbackPlayer != null) { isStreaming = _ringbackPlayer.IsStreaming; _audioConnector.Disconnect(_ringbackPlayer, Speaker); _ringbackPlayer.Dispose(); _ringbackPlayer = null; } // create new _ringbackPlayer = new WaveStreamPlayback(filePath, true, true); _audioConnector.Connect(_ringbackPlayer, Speaker); // start if necessary if (isStreaming) { _ringbackPlayer.Start(); } }
private void btnStop_Click(object sender, EventArgs e) { btnPlay.Enabled = true; btnPause.Enabled = false; btnPlay.Focus(); AudioTick.Stop(); if (m_MediaType == eMediaType.WavFile) { if (m_MediaPlayerWav != null) m_MediaPlayerWav.StopStreaming(); if (m_MediaSpeaker != null) m_MediaSpeaker.Stop(); m_Connector.Disconnect(m_MediaPlayerWav, m_MediaSpeaker); if (m_MediaPlayerWav != null) m_MediaPlayerWav.Dispose(); m_MediaPlayerWav = null; } else if (m_MediaType == eMediaType.Mp3File) { if (m_MediaPlayerMp3 != null) m_MediaPlayerMp3.StopStreaming(); if (m_MediaSpeaker != null) m_MediaSpeaker.Stop(); m_Connector.Disconnect(m_MediaPlayerMp3, m_MediaSpeaker); if (m_MediaPlayerMp3 != null) m_MediaPlayerMp3.Dispose(); m_MediaPlayerMp3 = null; } }
/// <summary> /// Initializes the audio handlers (microphone, speaker, DTMF player etc.). /// </summary> private void InitAudio() { // ----- CREATE ----- // devices Microphone = Microphone.GetDefaultDevice(); Speaker = Speaker.GetDefaultDevice(); // audio processors AudioEnhancer = new AudioQualityEnhancer(); AudioEnhancer.SetEchoSource(Speaker); dtmfPlayer = new DtmfEventWavePlayer(); // ringtones var ringbackStream = LoadRingbackStream(); var ringtoneStream = LoadRingtoneStream(); ringtonePlayer = new WaveStreamPlayback(ringtoneStream, true, false); ringbackPlayer = new WaveStreamPlayback(ringbackStream, true, false); // mixers outgoingDataMixer = new AudioMixerMediaHandler(); speakerMixer = new AudioMixerMediaHandler(); recordDataMixer = new AudioMixerMediaHandler(); // phone handlers phoneCallAudioSender = new PhoneCallAudioSender(); phoneCallAudioReceiver = new PhoneCallAudioReceiver(); // ----- CONNECT ----- // connect outgoing audioConnector.Connect(AudioEnhancer, outgoingDataMixer); audioConnector.Connect(outgoingDataMixer, phoneCallAudioSender); audioConnector.Connect(outgoingDataMixer, recordDataMixer); if (Microphone != null) { Microphone.LevelChanged += (Microphone_LevelChanged); audioConnector.Connect(Microphone, AudioEnhancer); } // connect incoming audioConnector.Connect(phoneCallAudioReceiver, speakerMixer); audioConnector.Connect(phoneCallAudioReceiver, recordDataMixer); audioConnector.Connect(ringtonePlayer, speakerMixer); audioConnector.Connect(ringbackPlayer, speakerMixer); audioConnector.Connect(dtmfPlayer, speakerMixer); if (Speaker != null) { Speaker.LevelChanged += (Speaker_LevelChanged); audioConnector.Connect(speakerMixer, Speaker); } // add to collection Dictionary<string, VoIPMediaHandler> collection = new Dictionary<string, VoIPMediaHandler>(); collection.Add("AudioEnhancer", AudioEnhancer); collection.Add("DTMFPlayer", dtmfPlayer); collection.Add("OutgoingDataMixer", outgoingDataMixer); collection.Add("SpeakerMixer", speakerMixer); collection.Add("PhoneCallAudioSender", phoneCallAudioSender); collection.Add("PhoneCallAudioReceiver", phoneCallAudioReceiver); audioCollection = new MediaHandlerCollection(audioConnector, collection); }
internal void SetRingtone(string filePath) { bool isStreaming = false; // dispose previous if (ringtonePlayer != null) { isStreaming = ringtonePlayer.IsStreaming; audioConnector.Disconnect(ringtonePlayer, speakerMixer); ringtonePlayer.Dispose(); ringtonePlayer = null; } // create new ringtonePlayer = new WaveStreamPlayback(filePath, true, true); audioConnector.Connect(ringtonePlayer, speakerMixer); // start if necessary if (isStreaming) ringtonePlayer.StartStreaming(); }
/// <summary> /// Loads a wav file for playback. /// </summary> public void LoadPlaybackWavFile(string filePath) { if (!initialized) return; if (wavPlayer != null) { audioConnector.Disconnect(wavPlayer, outgoingDataMixer); wavPlayer.Dispose(); wavRecorder = null; } wavPlayer = new WaveStreamPlayback(filePath, false, true); audioConnector.Connect(wavPlayer, outgoingDataMixer); }
private void CallPressed(string phoneNumber) { Logger.Log("Calling " + phoneNumber); WaveStreamPlayback waveStream = null; initiatedCall = apiExt.CreateCall(UsedPhoneNumber, phoneNumber, phoneNumber); if (initiatedCall == null) { return; } bool transferStarted = false; initiatedCall.CallStateChanged += (sender, e) => { try { if (e.Item == CallState.Answered) { if (transferStarted) { initiatedCall.DisconnectAudioSender(waveStream); waveStream.Dispose(); var tts = new TextToSpeech(); tts.Stopped += (sender1, e1) => { tts.Dispose(); initiatedCall.HangUp(); }; initiatedCall.ConnectAudioSender(tts); tts.AddAndStartText(string.Format("Calling {0} has failed. Please try again later.", phoneNumber)); return; } var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("OPSCallAssistant.Resources.ringback.wav"); waveStream = new WaveStreamPlayback(stream, true, true); initiatedCall.ConnectAudioSender(waveStream); waveStream.StartStreaming(); transferStarted = true; initiatedCall.BlindTransfer(phoneNumber); } if (e.Item.IsCallEnded()) { if (waveStream != null) { waveStream.Dispose(); } } } catch (Exception ex) { Logger.Log(ex.Message); Logger.Log(ex.StackTrace); } var k = 65; }; initiatedCall.Start(); }
/// <summary> /// Initializes the audio handlers (microphone, speaker, DTMF player etc.). /// </summary> private void InitAudio() { // ----- CREATE ----- // devices Microphone = Microphone.GetDefaultDevice(); Speaker = Speaker.GetDefaultDevice(); // audio processors AudioEnhancer = new AudioQualityEnhancer(); AudioEnhancer.SetEchoSource(Speaker); dtmfPlayer = new DtmfEventWavePlayer(); // ringtones var ringbackStream = LoadRingbackStream(); var ringtoneStream = LoadRingtoneStream(); ringtonePlayer = new WaveStreamPlayback(ringtoneStream, true, false); ringbackPlayer = new WaveStreamPlayback(ringbackStream, true, false); // mixers outgoingDataMixer = new AudioMixerMediaHandler(); speakerMixer = new AudioMixerMediaHandler(); recordDataMixer = new AudioMixerMediaHandler(); // phone handlers phoneCallAudioSender = new PhoneCallAudioSender(); phoneCallAudioReceiver = new PhoneCallAudioReceiver(); // ----- CONNECT ----- // connect outgoing audioConnector.Connect(AudioEnhancer, outgoingDataMixer); audioConnector.Connect(outgoingDataMixer, phoneCallAudioSender); audioConnector.Connect(outgoingDataMixer, recordDataMixer); if (Microphone != null) { Microphone.LevelChanged += (Microphone_LevelChanged); audioConnector.Connect(Microphone, AudioEnhancer); } // connect incoming audioConnector.Connect(phoneCallAudioReceiver, speakerMixer); audioConnector.Connect(phoneCallAudioReceiver, recordDataMixer); audioConnector.Connect(ringtonePlayer, speakerMixer); audioConnector.Connect(ringbackPlayer, speakerMixer); audioConnector.Connect(dtmfPlayer, speakerMixer); if (Speaker != null) { Speaker.LevelChanged += (Speaker_LevelChanged); audioConnector.Connect(speakerMixer, Speaker); } // add to collection Dictionary <string, VoIPMediaHandler> collection = new Dictionary <string, VoIPMediaHandler>(); collection.Add("AudioEnhancer", AudioEnhancer); collection.Add("DTMFPlayer", dtmfPlayer); collection.Add("OutgoingDataMixer", outgoingDataMixer); collection.Add("SpeakerMixer", speakerMixer); collection.Add("PhoneCallAudioSender", phoneCallAudioSender); collection.Add("PhoneCallAudioReceiver", phoneCallAudioReceiver); audioCollection = new MediaHandlerCollection(audioConnector, collection); }
private void CallPressed(string phoneNumber) { Logger.Log("Calling " + phoneNumber); WaveStreamPlayback waveStream = null; initiatedCall = apiExt.CreateCall(UsedPhoneNumber, phoneNumber, phoneNumber); if (initiatedCall == null) return; bool transferStarted = false; initiatedCall.CallStateChanged += (sender, e) => { try { if (e.Item == CallState.Answered) { if (transferStarted) { initiatedCall.DisconnectAudioSender(waveStream); waveStream.Dispose(); var tts = new TextToSpeech(); tts.Stopped += (sender1, e1)=>{ tts.Dispose(); initiatedCall.HangUp(); }; initiatedCall.ConnectAudioSender(tts); tts.AddAndStartText(string.Format("Calling {0} has failed. Please try again later.", phoneNumber)); return; } var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("OPSCallAssistant.Resources.ringback.wav"); waveStream = new WaveStreamPlayback(stream, true, true); initiatedCall.ConnectAudioSender(waveStream); waveStream.StartStreaming(); transferStarted = true; initiatedCall.BlindTransfer(phoneNumber); } if (e.Item.IsCallEnded()) { if (waveStream != null) waveStream.Dispose(); } } catch(Exception ex) { Logger.Log(ex.Message); Logger.Log(ex.StackTrace); } var k = 65; }; initiatedCall.Start(); }
private void CallLogPlayer_FormClosing(object sender, FormClosingEventArgs e) { if (m_MediaType == eMediaType.WavFile) { if (m_MediaPlayerWav != null) m_MediaPlayerWav.StopStreaming(); if (m_MediaSpeaker != null) m_MediaSpeaker.Stop(); m_Connector.Disconnect(m_MediaPlayerWav, m_MediaSpeaker); if (m_MediaPlayerWav != null) m_MediaPlayerWav.Dispose(); m_MediaPlayerWav = null; } else if (m_MediaType == eMediaType.Mp3File) { if (m_MediaPlayerMp3 != null) m_MediaPlayerMp3.StopStreaming(); if (m_MediaSpeaker != null) m_MediaSpeaker.Stop(); m_Connector.Disconnect(m_MediaPlayerMp3, m_MediaSpeaker); if (m_MediaPlayerMp3 != null) m_MediaPlayerMp3.Dispose(); m_MediaPlayerMp3 = null; } }
private void CreateWaveStreamPlayback(string path, bool repeat, bool cache) { WaveStreamPlayback = new WaveStreamPlayback(path, false, false); WaveStreamPlayback.Stopped += (WaveStreamPlayback_Stopped); mediaConnector.Connect(WaveStreamPlayback, outgoingDataMixer); }
private void btnPlay_Click(object sender, EventArgs e) { btnPlay.Enabled = false; btnPause.Enabled = true; btnPause.Focus(); #region Wav File if (m_MediaType == eMediaType.WavFile) { if (m_MediaPlayerWav != null) { if (!m_MediaPlayerWav.IsStreaming) { if (m_TrackerDragged) m_MediaPlayerWav.Stream.Position = Convert.ToInt64(barAudioTracker.EditValue); m_MediaPlayerWav.StartStreaming(); AudioTick.Start(); } return; } m_MediaSpeaker = Speaker.GetDefaultDevice(); //AudioSettingUtility.GetDefaultDeviceSpeaker(); if (m_MediaSpeaker == null) { MessageBox.Show("No audio device found.", "Bright Sales", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } m_Connector = new MediaConnector(); m_MediaPlayerWav = new WaveStreamPlayback(m_MediaFile); barAudioTracker.Properties.Minimum = 0; barAudioTracker.Properties.Maximum = Convert.ToInt32(m_MediaPlayerWav.Stream.Length); m_MediaSpeaker.Start(); m_Connector.Connect(m_MediaPlayerWav, m_MediaSpeaker); m_MediaPlayerWav.StartStreaming(); m_MediaPlayerWav.IsStreaming = true; AudioTick.Start(); } #endregion #region Mp3 File else if (m_MediaType == eMediaType.Mp3File) { if (m_MediaPlayerMp3 != null) { if (!m_MediaPlayerMp3.IsStreaming) { if (m_TrackerDragged) m_MediaPlayerMp3.Stream.Position = Convert.ToInt64(barAudioTracker.EditValue); m_MediaPlayerMp3.StartStreaming(); AudioTick.Start(); } return; } m_MediaSpeaker = Speaker.GetDefaultDevice(); // AudioSettingUtility.GetDefaultDeviceSpeaker(); if (m_MediaSpeaker == null) { MessageBox.Show("No audio device found.", "Bright Sales", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } m_Connector = new MediaConnector(); m_MediaPlayerMp3 = new MP3StreamPlayback(m_MediaFile); barAudioTracker.Properties.Minimum = 0; barAudioTracker.Properties.Maximum = Convert.ToInt32(m_MediaPlayerMp3.Stream.Length); m_MediaSpeaker.Start(); m_Connector.Connect(m_MediaPlayerMp3, m_MediaSpeaker); m_MediaPlayerMp3.StartStreaming(); m_MediaPlayerMp3.IsStreaming = true; AudioTick.Start(); } #endregion }