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
       updates,	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 series	of PPMs	is the first step  towards  converting	a  session  to
       video  using tools such as mjpegtools(1), ffmpeg(1), and/or ffmpeg2the-
       ora.

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 un-
	      til  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
	      keyboard/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;  de-
	      fault :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  limita-
	      tions of FBS 1.0.

       rfbproxy	-rs log.fbs
	      Connect to localhost:0 as	a shared session and record the	screen
	      updates  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	mjpeg-
	      tools(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)
	      (ppmtoy4m(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-compat-
       ible 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  au-
       thentication  information when recording	a session, and instead changes
       the recorded authenticated scheme to look like the session used no  au-
       thentication.

       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	proba-
       bly remain 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
       session 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.0>

home | help