The Project must have following requirements.
- Streaming Server will be a background process (Linux process or Windows Service Application); there will be also a GUI interface to configure Server parameters.
- Streaming Server has to manage 3 types of objects:
a. AudioProducer - An object that produces one or more audio source streams to be broadcasted
a. SourceStream - The audio stream that will be broadcasted to the listeners; tipically a SourceStream is a file generated by one AudioProducer.
b. Listener - The peer object that requests a Source Stream "on demand".
- Streaming Server must accept Source Streams in following formats:
a. Mono/Stereo channels
b. Sample Rate from 8KHz to 48KHz
- Streaming Server must accept Source Streams in following codecs:
a. Linear PCM 16 bit
b. G.711 a-law/mu-law
c. OggVorbis
d. MP3
- Streaming Server must broadcast audio to Listeners using following formats:
a. OggVorbis
b. MP3
- Each Listener can request one or more Source Streams. For each SourceStream, a listener can make a sort of "reservation" for the ID
belonging to the SourceStream and can be notified by server if SourceStream is avaliable or not (Stream START and Stream STOP)
- Each Source Stream is identified by a unique ID and Listeners have to use this ID to build the audio request (reservation, start, stop)
- Each Listener can request the Source Stream for "Live" listenting or use advanced features like:
a. Start listening from beginning of stream
b. rewind n seconds earlier the "realtme" (timeshift)
c. return to "Realtime" live streaming
So Streaming Server has to keep track of each SourceStream in order to let each Listener to seek inside the stream using protocol messages; this protocol
will be defined in detail during project development
- When a Source Stream is finished (i.e. the Producer does not write data into the Source Stream), it is completed and deleted.
If at least one Listener is requesting the Source Stream, it will not be deleted. Source Stream will be deleted only when all
Listeners will not request it anymore.
Finally, The Advanced Audio Streaming Server is similar to IceCast server but has addictional features like:
- ID reservation for Start/Stop notifications
- timeshift, rewind etc. functionalities
Further and detailed informations for those are interested in this project.