If you don't need an arbitrary image, just a solid black color, then there's no need to create a dummy video file: you can just reinterpret /dev/zero:
mplayer /dev/zero -rawvideo format=rgb24:pal:fps=20 -demuxer rawvideo \
-audiofile filename.mp3 -sub filename.srt
By removing format=rgb24: the background can even be made green [#008800] (along with saving some percentage of CPU usage).
However, implementing an arbitrary-colored background is kind of problematic.
For instance, one can do it by feeding the color bytes through a pipe:
perl -e 'for (;;) {syswrite(STDOUT, "\x3F\x3F\x3F\x00" x (1024*1024*2))}' | \
mplayer - -rawvideo format=rgb32:pal:fps=20 -demuxer rawvideo \
-audiofile filename.mp3 -sub filename.srt
, but then the ability to rewind backwards is lost.
Another option is to use the geq video filter and specify a desired color in YUV space:
mplayer /dev/zero -rawvideo pal:fps=20 -demuxer rawvideo -vf geq=63:128:128 \
-audiofile filename.mp3 -sub filename.srt
This way, rewinding backwards is working, but the CPU usage of playing grows noticeably higher.