Hello all,
I am working on a project to develop a softphone and I need to play back media in my softphone. I am using this sample program provided by Ozeki VoIP SIP SDK: Ozeki C# VoIP SDK - A SIP SDK for software developers
So here is my project:
Playing an uncompressed .wav audio file, I needed to find and open one. Ozeki VoIP SIP SDK provided me a useful tool WaveStreamPlayback that is for audio playing in case of .wav files.
The WaveStreamPlayback is a MediaHandler that can be initialized by setting the audio file to be played. I could do this by adding the filename (if it is in the same directory as the program) or the file path. I could also specify the repetition, the packetization time and if it is necessary I could set that a cache stream needs to be used.
In the sample program the audio file to play is specified by a textbox element. In this textbox I could give the file path or filename to be played. I could also use the Open button to pop up a browsing window where I could browse for the proper audio file.
When the audio file is specified, I could start playing with pressing the Start button on the GUI. If every parameter is set properly the playback will start buttonStartPlayback.Text = "Pause";
The Start button is also used for pausing a started stream. The difference between pausing and stopping a stream is that in the case of pausing, I could restart the streaming from the exact point it has been paused. In case of stopping the restart will be started from the beginning of the file.Code:1. WaveStreamPlayback.StartStreaming(); 2. WaveStreamPlayback.IsStreaming = true; 3. }
If I wanted to stop the audio streaming, I needed to press the stop button and the following code will runCode:1. buttonStartPlayback.Text = "Start"; 2. WaveStreamPlayback.PauseStreaming(); 3. WaveStreamPlayback.IsStreaming = false;
The audio stream playing could also be used for playing an audio file into a call. In this case I needed to connect the WaveStreamPlayback object to the PhoneCallAudioSender object with the connector. In that case the StartStreaming() method will play the audio file directly into the established call.Code:1. textBoxRecordingFile.Text = string.Empty; 2. if (WaveStreamPlayback != null) 3. { 4. WaveStreamPlayback.StopStreaming(); 5. buttonStartPlayback.Text = "Start"; 6. speaker.Stop(); 7. connector.Disconnect(WaveStreamPlayback, speaker); 8. WaveStreamPlayback.Dispose(); 9. WaveStreamPlayback = null; 10. }
You can find more useful information about other VoIP technologies on the website.
Good developing!
Aleksei




