Here's what I have so far for my insane mplayer based camera script, it seems to handle resizing to the display fine and captures images in 1024x768:
-input file=/tmp/mplayercontrol \
-vf screenshot \
-vo sdl \
-tv driver=v4l2:device=/dev/video0:width=$CAPTURE_WIDTH:height=$CAPTURE_HEIGHT:fps=$FPS \
I dropped tap to screenshot support because mplayer was handling mouse presses and moves in weird and unpredictable ways, so it was nearly unusable and kept pausing the video stream.
Instead I've switched to mplayer "slave" mode, this involves a fifo through which you can send commands direct to mplayer at your heart's content.
For example, if you run the above script (assuming everything is set up correctly, we'll cross that bridge when it comes to it etc) you can command mplayer to take a screenshot simply by running:
echo "screenshot" > /tmp/mplayercontrol
Other mplayer commands will work, too, but I suspect most of them will be useless.