On-demand streaming audio server
You'll need to reencode them, but you won't want to leave the re-encoding running all the time, as it's pretty juicy on the CPU. Solution? An on-demand streaming server.
You'll need to install xinetd and VLC (apt-get install cvlc xinetd), and configure a new xinetd "service".
cat /etc/xinetd.d/randomaudio
# default: off # description: Plays random audio service randomaudio { disable = no type = UNLISTED id = randomaudio socket_type = stream protocol = tcp port = 12345 <-- Whatever port you want it to run on instances = 1 user = username <-- Put your username here wait = no rlimit_cpu = 3600 nice = 20 max_load = 1.5 log_on_success = PID HOST USERID EXIT DURATION log_on_failure = HOST USERID ATTEMPT server = /path/to/next/script } Then, put a script in the location specified above:
#!/bin/bash
IFS="
"
find /bigdrivea/ /bigdriveb/ -type f -iname "*.mp3" | sort -R > /some/path/random.m3u
#echo Random track is "$random"
echo -en "HTTP/1.1 200 OK\r\n"
echo -en "\r\n"
vlc -I telnet --telnet-host 127.0.0.1 --sout '#transcode{acodec=vorb,ab=128,channels=2}:duplicate{dst=std{access=file,mux=ogg,dst=-}}' --sout-keep /some/path/random.m3u 2> /tmp/stream.err
Don't forget to make it executable (chmod 755 /path/to/next/script)Then play it, using mplayer http://your.ip.add.ress:12345/
It's a quick and dirty hack. But it doesn't require much on your system, other than VLC.