/dev/dsp to RTP

Ian Smith smithi at nimnet.asn.au
Fri Sep 16 11:19:33 UTC 2011

On Fri, 16 Sep 2011, Victor Sudakov wrote:
 > John-Mark Gurney wrote:
 > > > Excuse me for asking in this developers' list, but I have tried
 > > > freebsd-questions and Google without much success.
 > > > 
 > > > What software can I use to obtain sound from /dev/dsp and multicast it
 > > > into the network? I need no sophisticated codecs, HTTP interfaces etc.
 > > > A plain 8-bit PCM sound that I could listen to with some multicast RTP
 > > > client like VLC would do.
 > > > 
 > > > Thanks in advance for any input.
 > > 
 > > You could look at rat:
 > > http://mediatools.cs.ucl.ac.uk/nets/mmedia/wiki/RatWiki#RobustAudioToolRAT
 > > 
 > > It does contain a GUI though.  It's be quite a few years since I used
 > > it though...
 > I remember once using mbone/vic, and there were also mbone/vat and
 > mbone/rat, but the whole mbone directory is now gone from the ports
 > tree. I cannot find rat in the ports tree any more.
 > > 
 > > Other possibilities are ffmpeg or vlcserver.
 > Multicasting with ffmpeg works fine. The command line
 > ffmpeg -i file.mp3 -acodec copy -f rtp rtp:// -re
 > does send a multicast stream which can be listened to with VLC (but
 > not mplayer for some reason) on multiple hosts.

Thanks guys, that's good to know.  Now that's sorted out ..

 > Now I need to figure out how to stream live sound from /dev/dsp. All
 > my attemps to record sound from a USB audio interface, as simple as
 > ffmpeg -f oss -i /dev/dsp1 out.wav
 > have resulted so far in a severely distorted growl instead of normal
 > voice. Do you know how to figure out the sampling rate and other
 > parameters of the sound card? "cat /dev/sndstat"  does not output
 > anything really useful.
 > The audio interface is not to blame because I use it all the time with
 > linphone for SIP calls.

Sounds like a job for sox(1).  We've used it for various jobs including 
data logging for a radio station.  Possible examples from scripts:

 nice -15 sox -t ossdsp -c 2 -w -s -r 44100 /dev/dsp -t wav - | \
 nice -15 lame -r -s 44.1 -h -b 32 $1 $2 $3 $4 - "$nowFile"

 sox -t ossdsp -c $dspchan -w -s -r $dsprate /dev/dsp \
     -t raw    -c $dspchan -w -s -r $dsprate - \
 | tee $pipe0 > $pipe1 &

Garbled sound from reversed bytes is usually cured with -x switch.  sox 
is pretty small and light on resources in my experience.

jack is another possibility.  We're using it on a debian box to split 
pre-transmitter audio to a) a logging task and b) a shoutcast stream 
(both via lame, at different bitrates) but I've not used it on FreeBSD, 
where building it appears to depend on X; on debian it's fine headless. 
On debian it uses ALSA but I expect the FreeBSD one will work with OSS.

cheers, Ian

More information about the freebsd-multimedia mailing list