**StreamLogger project
**Solution for recording of various streams should be created. Stream
listing is in XML. Solution should run unattended, making provision for
every kind of error that could occur: disconnects, stream loss, etc.
StreamLogger will rip and save various kind of streams: shoutcast
audio, windows media audio, windows media video.
Proof of concept code is provided. List of streams for testing is provided also (given code doesn't work for them all).
## Deliverables
**Project detailed description
**I need to record streams from the radio stations listed in an XML file.
Each radio station should have it's own directory for file storage, also
listed in XML file. Streams should be recorded continuously, so no
second of audio is lost if the server is transmitting continuously.
**Features**
* for every stream, logger should save stream data to the hard
disk
* stream data is saved to disk in its native format - that means
that for shoutcast there will be mp3 and aac files, and for
windows media audio there will be wma audio, and so forth
* operator should choose duration of each stream log, and
application should delete all files older then time of the archived
file expires
* for windows media streams that facilitate multiple bitrates, user
should be able to choose which bitrates to capture
* stream should be saved in files with fixed length which is
determined by the operator, for example, every 10 minutes new
output file should be created and stream saved to it
* files should be cut on fixed time in the hourly clock, for example
on 0, 15, 30 and 45 minute of the hour
* metadata changes should be logged separately to log file along
with exact time of metadata change
* error messages should be logged to the file separate from
metadata log, one file for each stream
* if the connection to the stream server is broken, application
should try to restore the connection as soon as possible
* when restoring connection, application should try to restore it as
soon as possible, and in case of repeated failure to connect,
program will increase the time of delay, allowing the server to
lift any bans that might be in effect
* application holds the list of streams in XML file that has
following properties:
* stream/station name
* stream URL
* list of streams that should be saved
* activity status
* last error time
* last disconnection reason
* type of file cutting
* time of file cutting
* duration of the archive
* total cumulative bitrate of all streams
* errror reporting flags
* each logger (stream) should monitor it's state and report any
problems with the logging
* application should be able to run 24/7 regardless of any network
or server condition that might arise
* any errors should be sent via e-mail so the operator should be
able to choose corrective action
* file extensions:
* for shoutcast: .mp3 for mpeg encoded streams,
or .aac for aacplus encoded streams
* for windows audio: .wma
* for windows video: .wmv
**Technical**
Application consists of following components:
* main shell (windows forms application)
* ripping components for every particular stream format
* file cutter algorithm component
* stream ripper monitor component
**Platform**
* Software should run on Windows XP or Windows Server systems.
* application should be developed with visual studio 2005
* .net version 2.0 should be used
* for windows media, windows format sdk should be used
([login to view URL])
* for shoutcast, low socket communication will be sufficient
* sources should be maintained on subversion repository
**Existing code
**There is proof-of-concept code that runs good for shoutcast streams,
and rather well for .wma streams. Both projects are available and
should be preferably built further.
**Testing**
I will provide testing, but in order to fully test it in 24/7 conditions,
please allow some time before each test iteration (few days).
Coder could have TightVNC access to the machine on which logger
will be run 24/7 for purpose of testing, allowing him to run any version.
Mantis bugtracker will be used for maintaining defect and issue list.
I will provide listing of streams that should be handled, and project
will be completed when every stream from that list will be handled
properly.
**Partial delivery**
I will accept bids on partial solutions, for example I will accept one
bid for shoutcast, second for windows media. In that case, coder
should be able to work on same codebase with other coder.
**Stream listing (for testing purposes)**
Audio stream listing:
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]:31069
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
Video streams
rtsp://87.255.34.86/digitalidentity=zagabria
mms://87.255.34.86/denarotv=playlist
[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
mms://[login to view URL]
**Development**
I myself am a coder with too little time for coding and many years of experience. I do want to participate in software architecture planning, so please make use of my thoughts before you start coding.
**Attached file description**
I have developed a proof of concept solution that really works
well for few streams, both shoutcast and windows media audio. I
am sending it to you, and I would like you to extend from it. In
it, you'll find list of radio stations that work well now, so
you can observe the application in running state. Later, I will
provide list of radio/tv stations that application must provide
so you can extend it's operation to support them. Please check
it out and tell me what you think.
You will find two projects. First one is for shoutcast only, and
worked great for several streams (I have run it for two months
without any problems). That is the one with date from 2008.
Second project has refactored shoutcast streaming and added wma
streaming.
WMA and WMV should be saved to disk in native format. Please run
second demo and see how it's been done.
Your task here is to implement all the features from the bid
request (prefferably) using the code given and making it more
robust for all the stations that I will give you.
## Platform
**Platform
**
* Software should run on Windows XP or Windows Server systems.
* application should be developed with visual studio 2005
* .net version 2.0 should be used
* for windows media, windows format sdk should be used
([login to view URL])
* for shoutcast, low socket communication will be sufficient
* sources should be maintained on subversion repository