A little help understanding FIFOs?

This isn't strictly a Linux question, but... I've been working on a project to archive some streaming media for time shifting using 'mplayer' and have been using FIFOs to archive in Ogg Vorbis format:

mkfifo program_name.wav

(mplayer -ao pcm -aofile program_name.wav &)
MPLAYER_PID="`/sbin/pidof mplayer`"

(oggenc program_name.wav &)
OGGENC_PID="`/sbin/pidof oggenc`"

sleep 30m && kill -9 "$MPLAYER_PID" "$OGGENC_PID"
rm program_name.wav

That works OK. But some of the streams I archive are long (3-4 hours) and are difficult to "fast forward" through on my car player. So I'd like to break the recordings up into 5 minute segments WHILE I am encoding the stream. The problem is that when oggenc stops reading from the program_name.wav FIFO, mplayer stops streaming and won't start up again. Any ideas how I would do this without just grabbing the whole show in WAV format and then splitting it after the fact?