I’m having a problem with .FLV video recording on Mac and Linux machines using vnc2flv and vnc2swf. I’m playing with automated screencasting ideas and I like the idea of using VNC-based tools. I can generate .SWF files without a probem, .FLV output from both programs causes a weirdly flashing screen.
Update – problem solved. The underlying problem was that VLC wasn’t playing the .FLV video correctly. Using other video players (e.g. ffplay, MPlayer, SWF and FLV Player) the .FLV renders correctly on both Ubuntu and Mac. Thanks Brian.
Update – I’ve added some notes on the far more successful Windows test at the end.
I’ve recorded the problem for both programs (including an example of correct behaviour for SWF output):
I’m using the most recent versions of each program:
- x11vnc 0.9.9 as the VNC server (it exports localhost:0 for the two recorders)
- vnc2flv 20091114
- vnc2swf 0.9.5 Nov 15th 2008
vnc2flv is an update of vnc2swf which just exports an FLV video. The command line I use is:
For vnc2swf I change the output filename (using -o) to switch between FLV and SWF output:
./vnc2swf.py -n -o test.swf localhost:0
./vnc2swf.py -n -o test.flv localhost:0
As you’ll see in the video for the FLV output I get a weirdly flashing screen (it flashes the screen, then black, then the screen, then black…). For SWF output the results are fine.
This behaviour is the same on my MacBook and on two Ubuntu 9.10 machines (one with an ATI card, the other with an NVIDIA card).
Via vnc2swf I can convert the SWF to an FLV using edit.py. This converts the SWF into an equivalent FLV (with no flashing nonsense), so presumably the underlying FLV encoding library is working.
Does anyone have any ideas as to what I’m getting wrong? The author of vnc2flv has a demo video which shows it working fine on a Linux machine using x11vnc but otherwise I don’t see many posts about the tool and none that address my problem.
Update – compiling on Windows:
To compile vnc2flv on Windows you need to install MingW32, add the path (probably c:\mingw32\bin) to the system PATH and then compile using this line (which is different to the line it suggests you use when you first run ‘python setup.py install’):
python setup.py build --compiler=mingw32 install
To get both to run you’ll need to edit your system PATH again and add your Python’s Scripts directory, it probably looks like ‘c:\python25\scripts’.
Results when running vnc2swf and vnc2flv on Windows whilst recording the vnc session on my MacBook (using x11vnc 0.9.9):
- vnc2swf -n -o test.swf 192.168.1.65:0 (the MacBook’s IP address) – a perfect SWF capture
- vnc2swf -n -o test.flv 192.168.1.65:0 – failed, it won’t recognise .flv (nor with -t flv)
- flvrec.py 192.168.1.65:0 – a perfect .flv output video, just like test.swf
To improve your screencasting knowledge you must read The Screencasting Handbook. The author (Ian Ozsvald) also blogs.
Tags: Address, Ati Card, Converts, Correct Behaviour, Demo, Flashing, Flv Player, Ins, Linux, Linux Machine, Linux Machines, Localhost, Mac Linux, Macbook, Mingw32, Nonsense, Nvidia, Nvidia Card, Output Filename, Python, Swf Files, System Path, Tool, Tools, Ubuntu, Video Players, Video Recording, Vnc Server