/dev/dsp to RTP
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://184.108.40.206:5000 -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.
More information about the freebsd-multimedia