• entries
  • comments
  • views

ffmpeg screen capture command

Sign in to follow this  
Followers 0


i am always having to look this up. now at least i'll have it here:

ffmpeg -f x11grab -vc theora -s vga -r 24 -b 1200 -g 300 -i :0.0 ~/Videos/screenCapture1.ogv

option by option:

-f x11grab = take video from X...ffmpeg must have been compiled with enable-x11grab included; your distro or version may or may not have this enabled!

-vc = Video Codec...usually you will have ogg theora, xvid, [ff]mpeg (the default), and x264 available

-s = size. see the ffmpeg man page for details; vga is something like 800x600 and there are many other sizes available. know that it starts from the top left corner counts pixels from there.

-r = frame rate. lower frame rate gives smaller file size but looks a little less smooth

-b = bitrate. higher bitrate looks better but makes for a larger file size

-g = GOP size...300 provides a pretty nice looking image without increasing file size too much; it's got one intra frame every...i dunno....300/24 = 12.5 seconds or so.

-i = input...in this case it's :0.0 meaning your main screen. or display. or whatever it's called.

As you can imagine, there are a LOT more options available to you via man ffmpeg. Probably the most notable would be the offset, so if you wanted the capture area to not start at the very top left, you could tell it to, say, go down 10 pixels and over 10 pixels and THEN capture vga-size images, or xga-size images, or whatever.

Sign in to follow this  
Followers 0


Great to get in contact here.

I mean this to say:


$ ffmpeg -vcodec libxvid -b 1200 -g 300 -vd x11:0,0 -s 1024x768 screenCapture1.xvid

FFmpeg version SVN-r14424, Copyright © 2000-2008 Fabrice Bellard, et al.

configuration: --cc=cc --prefix=/usr/local --disable-debug --enable-memalign-hack --enable-shared --enable-postproc --extra-cflags=-I/usr/local/include/vorbis -I/usr/local/include --extra-ldflags=-L/usr/local/lib -la52 --extra-libs=-pthread --enable-gpl --enable-pthreads --enable-swscale --mandir=/usr/local/man --enable-liba52 --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libfaadbin --disable-libamr-nb --disable-libamr-wb --disable-mmx --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid

libavutil version: 49.7.0

libavcodec version: 51.61.0

libavformat version: 52.18.0

libavdevice version: 52.0.0

built on Jan 9 2009 12:11:23, gcc: 4.2.1 20070719 [FreeBSD]

ffmpeg: unrecognized option '-vd'


There is no really '-vd' described at http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html

Is this your mistake? :)


Share this comment

Link to comment

yeah that is my mistake and i wonder now how i got that wrong....

one think about your ffmpeg version though is that i don't see in the list of all those options that x11 grab is enabled. you may need to recompile is with that enabled...i'm not positive.

anyway, i'm correcting the post now...


Share this comment

Link to comment

Hi there, thanks for the command, but unfortunately

ffmpeg -f x11grab -vc theora -s vga -r 24 -b 1200 -g 300 -i :0.0 ./screenCapture1.ogv

gives me a nearly empty ogv file. Using an .avi filename does work though. Perhaps my ffmpeg doesn't support theora. :|

Do you have ideas how to record a video, but in a max-performance, least-speedy way, so I could encode it later but enjoy a faster framerate?

If you reply, please press the "reply" button at the bottom right of this so I get notified :)


Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now