Unknown input or output format: x11grab (Ubuntu)

I recompiled today ffmpeg because I wanted to have support for a couple more of formats but when I finished the installation (using the latest SVN version), I was unable to capture the screen any more. Got this error:

Unknown input or output format: x11grab```


I have been searching and reading almost hundreds of pages but no one seemed to have encountered this issue before in Ubuntu 9.10, or they were able to fix it but never bothered posting about that.

Finally in an <em>act of desperation</em> I decided to read the <em>configure</em> script and looked for instances of <em>x11</em>. This line looked very suspicious:

x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes"```

I checked (using Synaptic Package Manager) and found that although I had the X11 dev and Xext dev libraries installed on my system, I was missing Xfixes. So I installed libxfixes-dev:

sudo apt-get install libxfixes-dev

(or you can do it with Synaptic too!)

I depends on x11proto-fixes-dev, so you need to install that one as well, of course.

Then I ran configure again using this set of switches:

./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc \
 --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame \
--enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab \
--enable-libvorbis```


And made sure that <strong>x11_grab_device</strong> was in the <q>Enabled indevs</q> section from <em>configure's</em> output:

Enabled indevs: alsa oss v4l2 dv1394 v4l x11_grab_device```

If x11_grab_device hadn't been there (and trust me, it wasn't before installing xfixes) that would render the whole process of compiling ffmpeg useless, since it wouldn't have support for grabbing the X11 display (which is what you need for screen capturing).

Then I recompiled ffmpeg again, etc, etc... but the old examples from the manual don't seem to work any more. Their syntax needs to be adjusted:

this (from the manual):

ffmpeg -f x11grab -s cif -i :0.0 /tmp/out.mpg```


gives me the following error:

[x11grab @ 0x1e0e420]device: :0.0 -> display: :0.0 x: 0 y: 0 width: 352 height: 288 [x11grab @ 0x1e0e420]AVParameters don't have video size and/or rate. Use -s and -r. :0.0: Input/output error```

It seems that now we need to specify both the size and rate for the capture. So for example this will do (note the extra -r 30 which specifies the capture rate to be 30 frames per second):

ffmpeg -f x11grab -r 30 -s cif -i :0.0 /tmp/out.mpg```


Happy screen capturing! :-D