Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
RFBPROXY(1)			  User's Manual 		     RFBPROXY(1)

NAME
     rfbproxy - record, play back, or export a VNC session

SYNOPSIS
     rfbproxy [OPTION]... ACTION files

DESCRIPTION
     rfbproxy  is  a  simple proxy for VNC, which allows recording of screen up-
     dates, key presses and mouse events, for later replay to a  VNC  client  or
     export  as  a  series  of PPM frames.  It can also record screen updates by
     connecting to a VNC session shared by other client(s).  Exporting as a  se-
     ries  of PPMs is the first step towards converting a session to video using
     tools such as mjpegtools(1), ffmpeg(1), and/or ffmpeg2theora.

OPTIONS
     ACTION is exactly one of:

     -r, --record
	    record RFB communications and store them in the file (only one  file
	    is allowed for files)

     -p, --playback
	    play back the RFB communications that were captured to the files

     -x, --export
	    export  as a series of PPM frames written to standard output the RFB
	    communications that were captured to the files

     OPTIONS can be:

     -c, --stdout
	    use stdin and stdout for communications with the client.  Useful  in
	    conjunction with inetd

     -l, --loop
	    (playback  only)  when  file  is  finished, replay from first Frame-
	    BufferUpdate

     -d, --date
	    (record only) append date to end of filename

     -s, --shared
	    (record only) attach to a shared session

     -v     increase verbosity

     --pause=key
	    (playback only) when key is pressed, playback will be  paused  until
	    it	is  pressed  again.   key can be either a single lowercase ASCII
	    character or an X Windows keysym in hex (no preceding  '0x').   Note
	    that  keys	between  'a'  and 'f' will be interpreted as hexadecimal
	    numbers, and must be specified as '61' through '66'.   Backspace  is
	    'ff08';  Return  is  'ff0d'; Escape is 'ff1b'; Delete is 'ffff'. (no
	    default)

     --cycle=key
	    (playback only) when multiple files are specified pressing key  will
	    cycle between them.  Specified in same way as --pause.  (no default)

     --type=WHAT
	    (proxy record only) capture either screen updates (`screen') or key-
	    board/mouse  events  (`events').   If 'events' are requested, an RFM
	    (remote framebuffer macro) file is recorded that can be played  back
	    with rfbplaymacro.	(default screen)

     --framerate=[ntsc|pal|file|m/n]
	    (export only) specify framerate by name or numeric ratio (m/n frames
	    per second) (default ntsc)

     :n     Occupy  VNC  display  localhost:n (not valid with -c option; default
	    :10).

     --server=[server]:display
	    (record only) use specified VNC server (default localhost:0)

EXAMPLES
     rfbproxy -r log.fbs
	    Wait for a VNC client to connect to localhost:10,  then  connect  to
	    localhost:0  and  relay  all VNC traffic between them, recording the
	    screen updates in FBS 1.0 format to log.fbs  and  exiting  when  the
	    client  disconnects.   See BUGS AND CAVEATS below for limitations of
	    FBS 1.0.

     rfbproxy -rs log.fbs
	    Connect to localhost:0 as a shared session and record the screen up-
	    dates in FBS 1.1 format to log.fbs until killed (CNTL-C or kill).

     rfbproxy -p log.fbs
	    Wait for a VNC client to connect to localhost:10, then playback  the
	    VNC session recorded in log.fbs.

     rfbproxy -pl --cycle=ff0d log.fbs
	    Looping  playback  that  resets  if  the Return key hit.  Useful for
	    playing back sessions whose  colors  don't	show  right  because  of
	    client-initiated  changes in pixel format; hitting Return right away
	    to reset the playback often helps.	See BUGS AND CAVEATS below for a
	    better solution.

     rfbproxy -x log.fbs | ppmtoy4m -S 420_jpeg | mpeg2enc -o video.mpg
	    Convert the VNC session in log.fbs to MPEG-2 using mjpegtools(1).

     rfbproxy -x log.fbs | ppmtoy4m -S 420_jpeg | ffmpeg -f yuv4mpegpipe -i -
     -vcodec mpeg4 video.avi
	    Convert the VNC session in log.fbs to MPEG-4 using	ffmpeg(1)  (ppm-
	    toy4m(1) is from mjpegtools(1)).

     Here's  simple  shell  script  that simultaneously records VNC and audio at
     DVD's 48 kHz sample rate (vrec is from sndtools):

	 #!/bin/sh

	 function terminate() {
	      kill $background_pid
	 }
	 trap terminate SIGTERM SIGINT SIGKILL

	 rfbproxy -rs fbs &
	 background_pid=$!

	 vrec -s 48000 -b 16 -r audio

     This one converts the recorded fbs/audio pair into  a  DVD-standard  MPEG-2
     with MP2 audio using mjpegtools(1) and toolame(1).

	 #!/bin/sh

	 rfbproxy -x fbs | ppmtoy4m -S 420_jpeg | \
	     yuvscaler -n ntsc -O DVD | mpeg2enc -f 8 -o video.mpv
	 toolame -m mono -s 48 audio audio.mp2
	 mplex -f 8 -o video.mpg audio.mp2 video.mpv

     And  this one converts the recorded fbs/audio pair into an DivX6-compatible
     MPEG-4 with MP3 audio using ffmpeg(1) and lame(1).

	 #!/bin/sh

	 lame -m m -x -r -s 48 -h audio audio.mp3
	 rfbproxy -x fbs | ppmtoy4m -S 420_jpeg | \
	     ffmpeg -f yuv4mpegpipe -i - -i audio.mp3 \
		 -vcodec mpeg4 -vtag DivX -b 800  -g  300  -bf	2  -acodec  copy
	 video.avi

     Both  MPEG-2  and	MPEG-4	files  can  be converted to Ogg/Vorbis with ffm-
     peg2theora:

	 ffmpeg2theora -o video.ogg video.avi

SECURITY
     To avoid recording passwords (even encrypted), rfbproxy discards  authenti-
     cation  information  when	recording  a  session,	and  instead changes the
     recorded authenticated scheme to look like the session used no  authentica-
     tion.

     rfbproxy does not authenticate incomming connections in playback mode.

     Recording keystrokes with --type=events can record passwords.

BUGS AND CAVEATS
     A proxy record will create a version 1.0 FBS file whose pixel formats can't
     be  reliably  interpreted,  and will probably only work for playback to the
     same (or a very similar) client that  recorded  it,  and  not  for  export.
     Shard-session  records  create  version  1.1 FBS files that don't have this
     problem.

     Playback makes no attempt to handle  client  FramebufferUpdateRequests;  it
     justs  transmits  a  series  of  FramebufferUpdates  exactly  as  they were
     recorded.	This defect is most noticeable with clients that  pan  across  a
     session  larger than their window size; the exposed areas will probably re-
     main  undrawn  by	rfbproxy.   Clients  that  switch  pixel  formats  (i.e,
     xvncviewer)  can  also  be affected by this; parts of the screen can remain
     drawn in a low-resolution format after the client has switched to	a  high-
     resolution  format.   Fix	this  by stopping the client from changing pixel
     formats.  For xvncviewer try -autoselect=0 -fullcolor  (version  4.1.1)  or
     -noauto -depth 24 (version 3.3.7).

     If you intend to use the --loop or --cycle options when playing back an FBS
     1.0 file, you cannot use the ZRLE encoding when recording.  This is because
     the zlib state cannot be maintained.  FBS 1.1 files do not use ZRLE at all.

     Suspending  rfbproxy (or any script using it) when recording in shared ses-
     sion mode can freeze all sessions attached to the VNC server.

     Neither export nor FBS 1.1 playback work on colormap  sessions  (only  true
     color is supported).

     Pixel formats larger than 32 bits are not supported.

AUTHORS
     Tim Waugh <twaugh@redhat.com>
     Brent Baccala <baccala@freesoft.org>

SEE ALSO
     vncviewer(1), vncserver(1), Xvnc(1), ppm(5), mjpegtools(1), ffmpeg(1).

VNC EXTRAS			   19 Aug 2005			     RFBPROXY(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rfbproxy&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help