Many of us like getting our hold music from Icecast or Shoutcast streams, sometimes our own. It gives a just a bit more control over the hold music. With some sort of jukebox set up, you could even let callers choose files to play.
To do this, most of us have just cut and paste the line from one of many tutorials, that looks something like
application=/usr/bin/mpg123 -q -s --mono -r 8000 -f 8192 -b 2048 http://192.168.1.100:8000/hold.mp3
The problem is that, with that setting, hold music will often start and stop for no reason whatsoever. The problem is that mpg123 has started buffering the stream. (You may also hear a loud squeak at the start also.) It's the "-b" setting that's causing the problem. You can turn off buffering by setting it to "0" via something like
application=/usr/bin/mpg123 -q -s --mono -r 8000 -f 8192 -b 0 http://192.168.1.100:8000/hold.mp3
Don't forget that changes such as this require that you restart Asterisk (vice reload).
Thanks goes to cbrogers in the TrixBox forums for the hint!