When you use
realplay, sometimes you would like
to save the sound that you hear, to be able to listen to it later
in time. But
realplay doesn't have a
export button, so how to do it?
It seems hard, if not impossible.
So I decided to kick some code for a very tiny utility that would do this kind of things.
libreplay will save the output of
a raw format, so you can do what you want with this uncompressed data later
June 1 2006:
libreplay-0.5.1.tar.gz (very small file)
Fixing minor stuff (turning stuff into
the including of
May 29 2006:
libreplay-0.5.tar.gz (very small file)
David Decotigny (david decotigny free fr, with dots betweens these words, except the second hole which gets an at-sign) added an emulation mode. The lib won't be aggressive while downloading the stream but won't output any sound (in 0.3 we output to the sound card to slow down the download). He also provided the possibility to write audio in other directories than
Feb 26 2003:
libreplay-0.3.tar.gz (very small file)
Peter Gober (peter gober fokus fraunhofer de, with dots between all those strings, except the second hole, which receives an at-sign) (if your addresses' seeker gets this one, it is surely not a computer :-)) had troubles with a live stream, and added support for it. After some hacks, here is the release. It was not very tested, if you have troubles, tell me.
Dec 19 2002: libreplay-0.2.tar.gz (very small file)
Nov 29 2002: libreplay-0.1.tar.gz (very small file)
libreplay is in the public domain.
Just do a make in the directory, should be alright.
There will be the file
libreplay.so which contains
This works on linux with oss. It may work somewhere else, but it was not tested. If you can't use it, try to contact me.
This documentation is only valid for version 0.5 of
libreplay. Avoid using 0.1, it crashes too much
(Version 0.2 does not have
(Version 0.3 does not have
You must set the variable
to the place where your libc is (something like
/lib/libc.so.6). If you are under
/lib/libc.so.6 by your libc of course).
in the directory where
realplay will create
for each stream you play. It will create these files in the
/tmp directory by default (can be changed by
LIBREPLAY_DIRPATH environment variable).
XX will be replaced by the
stream number (from 0 to whatever the number of streams you download).
be the speed of the stream (
44100 if the stream is at
44100Hz, for instance).
ZZ will be the number of channels
of the stream (
1 for mono,
2 for stereo).
AA will be the size of each sample of the stream (I only
16 for it, meaning: 16 bits, signed, little endian).
Some streams may be
realplay sometimes opens and closes the soundcard
whitout outputting any sound.
The output is a raw file, use
sox or you favorite
conversion program to transform it into a format you like more.
For instance, using
sox, you would do
sox -t raw -s -w -c 2 -r 44100 realplayer_stream_6_speed_44100_channels_1_format_16.raw out.wav copy
-t raw for saying it's a raw file,
-s -w for saying it's 16b signed,
-c 2 for saying there are 2 channels,
-r 44100 for saying it's a 44100Hz stream.
It has been tested against realplayer 8.
By setting the environment variable
you can save live streams. Some streams create problems when they are
saved faster than they are played; the server will send again some
audio data, and the result is bad. With this option, the stream
is played and saved at the same time. If you have problems with
your saved streams, try this option.
There is also the environment variable
which also adds some delay in the downloading, but does not output
audio to the sound card (the sound card might be in use, rendering
the use of
LIBREPLAY_AUDIO impossible). You set it
to 1 for an almost exact emulation of delay. You may set it to
higher values to speed up a bit the download. Default value is 4
which means the download has 1/4 of realtime delay (the stream is
downloaded at speed x4).
You also may set
LIBREPLAY_DIRPATH and the files
will be saved in the indicated directory. The default directory
You may use the scripts
realplay.dump_live, which include all the necessary to
realplay be used with
realplay.dump will only save the stream.
realplay.dump_live will save it and play it.
There is also
LIBREPLAY_EMULATE environment variable.
You may need to edit these scripts, to adapt the paths, for them to fit your system. These scripts are only here to help you; if they don't work, you still will need to read the documentation (this file) and understand it.
You may also need to modify the value of
realplay.dump_emulate_live if it is too high or too low,
depending on the stream (setting it to 1 should be safe for all streams).
a little perl utility to, maybe, facilitate the usage of this
little tool. realexport.tar.gz
realexport.sh something.rm is the way to use it,
according to Gregory. (It may work, it may fail, not tested.) You
will need sox and lame available on your system.
realexport.sh was developed with the 0.3
libreplay. It may not work with the 0.5 version
LIBREPLAY_EMULATE is not supported I guess).
Take also a look at
by David Decotigny. He does the
sox conversion and
ogg encoding on the fly. (Maybe I should include it − after
cleaning − in the main release...)
Contact me so I can help you.
If you crash
realplay, please include the url
of the stream you tried to save, so I can try to reproduce the
It should be very easy to read the code and know what's going on.
To be quick, we use the preload facility to catch
ioctl to let
realplay think it
is talking to
/dev/dsp where in fact it outputs sound
into a regular file. (With the 0.3 version and above, we catch
write too, since we may really open the audio device and
realplay does 1 write, we do 2 writes.)
(This was added March, 21st, 2005.)
realplay could be a static program, this would
make things a little harder, and render
unusable. But we simply could patch the linux kernel to let it
save every output to
/dev/dsp into a regular file.
Or, without entering kernel world, we could use
Dario thought this idea was
nice. He made some shell scripts, using the wonderful
strace. Here they are.
realplayuses file descriptor 12). It's shell with some Perl.
rpldump.sh, but watching file descriptor 10 to 14, just in case
realplaywould use something else than 12. Dario justifies it by saying that file descriptors 0, 1 and 2 are always used, up to 9 are used by the shell, so we have 10 up to what we want for
realplay. Anyway, still a hack. We should trace the
opensyscalls and wait for
/dev/dspor similar (and take care of
These scripts do more or less the same job as
You don't get the type of audio (44100Hz, 16b, etc.) but we could
get this information from
strace. Well, just
a demonstration of the easiness of the job... You may need some hacks
to let them work. Thanks Dario!
Could it be easy for
realplay to know it is not
/dev/dsp? Well, I don't know... and
I don't care. I want to control what happens inside my computer.
To protect from
libreplay or the
stuff, we could create a "trust" computer, that would not run with such
hacks. Some are thinking about this solution. We'll see
if we can defeat them or not if such a computer is released one day
and adopted by users. I bet we can, but it's just a bet.
If we can't, well, simply play the sound and record it from the speaker with old-fashioned hardware.
Forbid people to record and share is impossible. Humans are hardwired to communicate with each others. The world of Money is trying to put its own rules in the process, and it will lose. (If it could destroy itself in the meantime, this would not be bad, but we are entering the world of off-topicness here.) That's only a bet, though...
Copyrights are definitly a bad thing.
I just saw (November, 14th, 2003) that there existed vsound, which exists for several years, as it seems. You think you make something original, and you get doomed... (You may need to search the web for vsound, since the original website of it is this one, done by an Australian, but because of legal matters, he took it away from the Internet, so maybe the link I give does not exist anymore at the time you click it; I love the world I live in, really.)
Creation time: Fri, 29 Nov 2002 22:08:22 +0100
Last update: Mon, 14 Apr 2008 13:20:31 +0200
Powered by a human brain, best viewed with your eyes (or your fingers if you are blind).