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: http://www.voip-sip-sdk.com/p_406-voip-media-handling-voip.html
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";
2. WaveStreamPlayback.IsStreaming = true;
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.
1. buttonStartPlayback.Text = "Start";
3. WaveStreamPlayback.IsStreaming = false;
If I wanted to stop the audio streaming, I needed to press the stop button and the following code will run
1. textBoxRecordingFile.Text = string.Empty;
2. if (WaveStreamPlayback != null)
5. buttonStartPlayback.Text = "Start";
7. connector.Disconnect(WaveStreamPlayback, speaker);
9. WaveStreamPlayback = null;
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.
You can find more useful information about other VoIP technologies on the website.