Here is the full output of ffmpeg.exe -i  (the original ffmpeg comes with Serviio):
C:\Program Files\Serviio\lib>ffmpeg.exe -i bolt.rmvb
FFmpeg version SVN-r23012, Copyright (c) 2000-2010 the FFmpeg developers
  built on May  3 2010 19:05:24 with gcc 3.4.5 (mingw-vista special r3)
  configuration: --enable-static --disable-shared --disable-ffplay --disable-ffs
erver --enable-memalign-hack --enable-libmp3lame --enable-w32threads --extra-ldf
lags=-L/static/lib --extra-cflags=-I/static/include
  libavutil     50.15. 0 / 50.15. 0
  libavcodec    52.66. 0 / 52.66. 0
  libavformat   52.62. 0 / 52.62. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0.10. 0 /  0.10. 0
[NULL @ 01501700]Unsupported video codec
[rm @ 0140ce10]max_analyze_duration reached
Input #0, rm, from 'bolt.rmvb':
  Metadata:
    title           : ╩Ñ│Ã╝ÊÈ░[www.dream2008.cn]@├¸ðÃ╣À
    author          : ┴¸├Ñ═├═├
    copyright       : È¡ÁþË░╣½╦¥
    comment         :
  Duration: 01:36:20.83, start: 0.000000, bitrate: 603 kb/s
    Stream #0.0: Audio: cook, 44100 Hz, stereo, s16, 44 kb/s
    Stream #0.1: Video: rv40, yuv420p, 640x336, 553 kb/s, 12.05 fps, 12 tbr, 1k
tbn, 12 tbc
    Stream #0.2: Data: 0x0000
At least one output file must be specified
The first thing that caught my eyes was the message "[NULL @ 01501700]Unsupported video codec".  This made me think this was the cause of my problem.  
Examining the above message in more details, I noticed that the video codec reported by ffmpeg was rv40. I supposed it meant RealVideo 4.0, which is in fact a supported format in ffmpeg.
I then tried the following command line:
ffmpeg.exe -i bolt.rmvb -t 60 out.avi
C:\Program Files\Serviio\lib>ffmpeg.exe -i bolt.rmvb -t 60 out.avi
FFmpeg version SVN-r23012, Copyright (c) 2000-2010 the FFmpeg developers
  built on May  3 2010 19:05:24 with gcc 3.4.5 (mingw-vista special r3)
  configuration: --enable-static --disable-shared --disable-ffplay --disable-ffs
erver --enable-memalign-hack --enable-libmp3lame --enable-w32threads --extra-ldf
lags=-L/static/lib --extra-cflags=-I/static/include
  libavutil     50.15. 0 / 50.15. 0
  libavcodec    52.66. 0 / 52.66. 0
  libavformat   52.62. 0 / 52.62. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0.10. 0 /  0.10. 0
[NULL @ 01501720]Unsupported video codec
[rm @ 0140ce30]max_analyze_duration reached
Input #0, rm, from 'bolt.rmvb':
  Metadata:
    title           : ╩Ñ│Ã╝ÊÈ░[www.dream2008.cn]@├¸ðÃ╣À
    author          : ┴¸├Ñ═├═├
    copyright       : È¡ÁþË░╣½╦¥
    comment         :
  Duration: 01:36:20.83, start: 0.000000, bitrate: 603 kb/s
    Stream #0.0: Audio: cook, 44100 Hz, stereo, s16, 44 kb/s
    Stream #0.1: Video: rv40, yuv420p, 640x336, 553 kb/s, 12.05 fps, 12 tbr, 1k
tbn, 12 tbc
    Stream #0.2: Data: 0x0000
Output #0, avi, to 'out.avi':
  Metadata:
    ISFT            : Lavf52.62.0
    Stream #0.0: Video: mpeg4, yuv420p, 640x336, q=2-31, 200 kb/s, 12 tbn, 12 tb
c
    Stream #0.1: Audio: mp2, 44100 Hz, stereo, s16, 64 kb/s
Stream mapping:
  Stream #0.1 -> #0.0
  Stream #0.0 -> #0.1
Press [q] to stop encoding
Compiler did not align stack variables. Libavcodec has been miscompiled
and may be very slow or crash. This is not a bug in libavcodec,
but in the compiler. You may try recompiling using gcc >= 4.2.
Do not report crashes to FFmpeg developers.
frame=   34 fps=  0 q=4.1 size=     209kB time=5.51 bitrate= 311.4kbits/s dup=0
frame=   59 fps=  0 q=6.7 size=     284kB time=7.37 bitrate= 315.8kbits/s dup=0
frame=   85 fps= 57 q=8.5 size=     425kB time=11.08 bitrate= 314.4kbits/s dup=0
frame=  105 fps= 53 q=23.4 size=     497kB time=12.96 bitrate= 314.2kbits/s dup=
frame=  130 fps= 52 q=21.0 size=     584kB time=14.81 bitrate= 322.8kbits/s dup=
frame=  161 fps= 54 q=17.5 size=     738kB time=18.52 bitrate= 326.6kbits/s dup=
frame=  199 fps= 57 q=15.1 size=     867kB time=22.23 bitrate= 319.6kbits/s dup=
frame=  251 fps= 63 q=11.4 size=     988kB time=25.94 bitrate= 312.1kbits/s dup=
frame=  312 fps= 69 q=21.4 size=    1191kB time=31.53 bitrate= 309.6kbits/s dup=
frame=  342 fps= 68 q=24.8 size=    1258kB time=33.38 bitrate= 308.6kbits/s dup=
frame=  358 fps= 65 q=31.0 size=    1391kB time=37.09 bitrate= 307.2kbits/s dup=
frame=  378 fps= 63 q=31.0 size=    1450kB time=38.95 bitrate= 305.0kbits/s dup=
frame=  416 fps= 64 q=20.3 size=    1548kB time=42.66 bitrate= 297.3kbits/s dup=
frame=  459 fps= 66 q=7.7 size=    1694kB time=48.25 bitrate= 287.6kbits/s dup=0
frame=  500 fps= 67 q=13.4 size=    1823kB time=53.81 bitrate= 277.5kbits/s dup=
frame=  559 fps= 70 q=8.7 Lsize=    2086kB time=59.98 bitrate= 284.9kbits/s dup=
0 drop=846
video:1535kB audio:469kB global headers:0kB muxing overhead 4.138771%
To my surprise, ffmpeg did recode the rmvb file to a avi file with mpg4 video codec.  However there was significant quality loss.
I then encoded it to the DVD preset and the quality loss was insignificant to me.
So my questions now are:
1.  Why ffmpeg reported "[NULL @ 01501700]Unsupported video codec", but in fact it could recode it?
2.  Why Serviio didn't transcode the file and stream to my Samsung device?
Any comments are welcome, please.