A Stream Recorder.


2014-09-14: v2.3 -
- Protect all filenames in single quotes, improved TS chunk reporting
2014-09-13: v2.2 -
- Add support for .m3u8 playlists (Playlist of Transport Stream chunks, containing MP3 or H.263/AAC)
2009-03-14: v2.1 -
- Terminate DSProxy with KILL instead of TERM signal
2008-09-18: v2.0 -
- use vsound instead of dsproxy
2005-05-27: v1.2 -
- maintain a log file with all recordings
- extended debugging info
2005-05-02: v1.1 -
- add id3v1 tag after recoding is finished
- improved handling of multi-part recordings
2005-05-01: v1.0 -
- Initial release

Helper to re-tag existing audio file:


Just copy the file into a binary directory included in your PATH and make sure all it's executable flags are set:
 chmod a+x
 mv /usr/local/bin/


A perl wrapper for vsound, realplayer and lame.
What you'll need:
VSound: (get version 0.6, apply patch from )
RealPlayer:  (set sound device to OSS, not ALSA)
 (old ver.:
gnu wget:
  (unpack 'live' directory in /usr/src/ and follow build instructions)

How to do it:
- Make sure all the software above is installed
- Start with " <file or URL> [<perfect>]"
  - URL can be any http:, rtsp: or pnm: link
    - the recording file name will be that of the .rm file, 
      e.g. rtsp:// --> file.mp3
  - file can be:
    - filename.url: One line with a URL as above
    - filename.strec: First line with the URL, second line with Title, Artist, Album and Year, separated by TABs, third line with Description.
    - Otherwise, a line with 'rtsp:' from the file will be used as the URL
    - The recording filename will be that of the file, 
      e.g. /tmp/file.ram --> /tmp/file.mp3 (or $target/file.mp3, if $target is set in the script)
- If you specify a non-zero value for <perfect>, the recoding will be
  stopped if a DSP_RESET is encountered.
- Now the realplayer should start and you should see some messages like these:
  00:00:00.00 SNDCTL_DSP_RESET
  00:00:00.00 SNDCTL_DSP_SPEED    => 44100
  00:00:00.00 SNDCTL_DSP_CHANNELS => 2
  Assuming raw pcm input file : Forcing byte-swapping
  LAME version 3.93  (
  Using polyphase lowpass  filter, transition band: 15115 Hz - 15648 Hz
  Encoding <stdin> to audiofile.mp3
  Encoding as 44.1 kHz 128 kbps j-stereo MPEG-1 Layer III (11x) qval=2
  00:00:00.00 SNDCTL_DSP_SETFMT   => AFMT_S16_LE AFMT_S16_NE
  00:00:00.00 SNDCTL_DSP_RESET
  00:00:00.00 SNDCTL_DSP_SETFRAGMENT => 0001000d
  00:00:00.00 SNDCTL_DSP_SETFMT   => AFMT_S16_LE AFMT_S16_NE
  00:00:00.00 SNDCTL_DSP_CHANNELS => 2
  00:00:00.00 SNDCTL_DSP_SPEED    => 44100
  00:00:00.00 SNDCTL_DSP_RESET
  waiting 5
- The "waiting" value will count up until the pre-buffering is finished, 
  after that is continues like this:
  00:00:00.00 SOUND_MIXER_WRITE_VOLUME => 75 - 75
  00:00:00.00 SOUND_MIXER_WRITE_BASS   => 75 - 75
  00:00:00.00 SOUND_MIXER_WRITE_TREBLE => 75 - 75
  00:00:00.00 SOUND_MIXER_WRITE_PCM    => 75 - 75
  00:00:00.00 SOUND_MIXER_WRITE_PCM    => 75 - 75
- The time value at the bottom will keep on going during the recording.
- After the file has finished playing, you should see two more
  DSP_RESET messages and success message like:
    "FINISHED: clip is completed at 00:00:10.52"
  The printed time is the recorded length of the .mp3 file. 
- If there were any other DSP_RESET messages during the file recording, 
  the connection got bad and you might have to start over again.
  If that happens, a warning is also displayed: 
    "ALERT! stream interruption at 00:00:05.70"


2005-05-01 Christian Wolff You can reach me at sub-feedback at this domain.
other projects