vnc2flv

Desktop screen recorder

Homepage Recent Changes

Last Modified: Sun Aug 2 23:59:30 JST 2009

What's It?

Vnc2flv is a cross-platform screen recording tool for UNIX. It captures a VNC desktop session (your own screen or a remote computer) and saves as a Flash Video (FLV) file.

Vnc2flv is a rewrite of its predecessor, vnc2swf. As FLV format is more prevalent today, vnc2flv is specialized for FLV format and aims at a simpler and more lightweight functionality.

Download:
http://www.unixuser.org/~euske/python/vnc2flv/vnc2flv-20090802.tar.gz

Questions and Comments: (post here!)
http://groups.google.com/group/vnc2flv-users/


How to Install

  1. First of all, you need to have a VNC server running on your computer (or a remote machine you want to capture).
  2. You need Python 2.4 or newer.
  3. Download and extract the vnc2flv source distribution.
  4. Run setup.py to install:
    # python setup.py install
    
  5. Done!

How to Use

vnc2flv comes with three programs:

flvrec.py

flvrec.py is the main recording program. It connects the specified VNC server and immediately starts recording when it's started and stops when Ctrl-C is pressed (or SIGINT is sent to the process). You need to have a VNC server running on the target machine in advance.

The recorded file is playable via either desktop programs like ffmpeg, VLC or mplayer, or other online Flash-based players.

Syntax:

flvrec.py [options] [host[:port]]

Examples:

$ x11vnc -quiet -localhost -viewonly -nopw -bg
(start up a vnc server)

The VNC desktop is:      localhost:0
PORT=5900

******************************************************************************
Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?

The scheme stores pixel data offscreen on the VNC viewer side for faster
retrieval.  It should work with any VNC viewer.  Try it by running:

    x11vnc -ncache 10 ...

more info: http://www.karlrunge.com/x11vnc/#faq-client-caching

$ flvrec.py localhost:5900
(Record a local desktop)

$ flvrec.py -C 640x480+0-0 localhost:5900
(Record a local desktop with a 640x480 window at the bottom left of the screen.)

$ flvrec.py remotehost:5900
(Connect a remote computer and record its screen)

Options:

-o filename
Specifies the output file name. By default, the output file is given with a unique name.
-r fps
Specifies the number of frames per second. (default: 15)
-K keyframe
Specifies the rate of key frames that is inserted in every this number of frames. (default: every 150 frames)
-P pwdfile
Specifies the password file for a vnc session.
-N
Suppress the appearance of mouse pointer in the video.
-e encoding,encoding,...
Specifies the vnc encoding methods. (default: raw)
-B blocksize
Specifies the block size. (default: 32)
-C wxh{+|-}x{+|-}y
Specifies the clipping. (default: entire screen)
-d
Increases the debug level.

flvcat.py

flvcat.py is a tiny editing program for a FLV movie. Concatenating, clipping the frame size, re-sampling the frames by clipping out the changing area, etc.

Syntax:

flvcat.py [options] src1[:ranges1] src2[:ranges2] ... output

Options:

-r fps
Specifies the number of frames per second. (default: 15)
-K keyframe
Specifies the rate of key frames that is inserted in every this number of frames. (default: every 150 frames)
-B blocksize
Specifies the block size. (default: 32)
-C wxh{+|-}x{+|-}y
Specifies the clipping. (default: entire frame)
-W wxh
Specifies the window size for auto scrolling. (default: no auto scrolling)
-S speed
Specifies the speed of auto scrolling. (default: 60 frames)
-f
Forces overwriting the output file.

flvaddmp3.py

Add mp3 audio files to a movie.

Syntax:

flvaddmp3.py [options] src mp3file1[:ranges] mp3file2[:ranges] ... output

Options:

-f
Forces overwriting the output file.

flvdump.py (for debugging)

This program dumps the contents of a FLV file. This is used solely for debugging purposes.

Syntax:

flvdump.py [options] flvfile

Changes


TODOs


Related Links


Terms and Conditions

Copyright (c) 2009 Yusuke Shinyama <yusuke at cs dot nyu dot edu>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Yusuke Shinyama