Whether you need to capture what's happening on your screen for a performance, a tutorial, or for live broadcast, there are several ways to record the Linux screen.
Ffmpeg is a versatile video engine. You should have installed it when setting up Slackermedia; if not, read the section on how to do a proper Slackermedia FFmpeg Install, and the basic overview of its usage in the ffmpeg section.
Ffmpeg should have had setcap permission granted to it so that its attempt to capture activity in realtime is not squelched by the kernel.
Just as ffmpeg can capture input from webcams or existing movie streams, it can also capture the video display of your computer:
$ ffmpeg -f x11grab -an -s hd1080 -r 25 \ -v:b 23000 -i :0.0 -g 1 -q:v 0.1 \ -vcodec libxvid screenCapture1.mp4
This translates to:
-f x11grabsets the input format to x11grab, in absence of a video stream of a more traditional format
-anmeans it will not capture audio
-s hd1080captures HD video (1920×1080)
-r 25sets frame rate to 25
-v:b 23000sets the video bitrate to 23Mbps
-i :0.0points the input the first monitor of your computer
-g 1sets the group of pictures to 1, a very high setting, resulting in a large file
-q:v 0.1sets compression quality to very high
-vcodecsets the video codec for output to use libxvid, a good open source codec
screenCapture1.mp4sets the filename of the ouput file
The resulting file is a large, unwieldy video of whatever was happening on the screen from the start of the command up until it is terminated with
To capture the screen plus audio, you must know what audio device you want to record. This can often be a frustrating process, and is best done as a separate exercise. That is, figure out your audio setup, determine what device that the computer sees maps to which peripheral you have connected to the physical box, and then go about recording the screen with audio armed with your knew understanding of how your computer names its audio devices.
Once you are ready, a command like this should do nicely:
ffmpeg -f alsa -i hw:2 -f x11grab -s hd1080 \ -r 25 -v:b 21000 -i :0.0 -g 1 -q:v 0.1 \ -vcodec libxvid output.mp4
It's basically the same command as above, but this time one of the input formats is set to
alsa and an input device is set to
hw:2, which maps in the physical world (in this real-life example) to an external USB microphone headset.
The result is a large file with both video and audio.
FFmpeg & Mplayer
rowinggolfer and Linux blog http://linuxbookpro.com devised a hybrid method of not only capturing the screen, but also super-imposing and in-setting video from a webcam to achieve a live picture-in-picture mode.
First, start Mplayer to capture input from your webcam in a relatively small window to achieve the picture-in-picture look:
$ mplayer tv:// -tv driver=v4l2:width=320:height=240:device=/dev/video0 -vo xv -noborder -geometry 100%:100% -ontop
When that window appears,
alt-click on it and drag it to where you want it on your screen.
If you would rather have a border on the window, omit the
-noborder switch from the command. Position the screen and then right-click on the window's title bar and hide the border.
In a separate terminal, start ffmpeg:
$ ffmpeg -f oss -i /dev/dsp -f x11grab -s hd1080 -r 25 -i :0.0 out.mp4
Record your screencast.
There are two versions of RecordMyDesktop; the terminal command
recordmydesktop and the GUI frontend, qt-recordmydeskteop. The latter is just a frontend to the first, so the basic functionality is exactly the same.
Install the terminal command and, optionally, the frontend from http://slackbuilds.org. If you have already installed kdenlive then you may already have these installed, as they are soft-dependencies for that.
recordmydesktop from the terminal, or
qt-recordmydesktop from the K Menu.
Recordmydesktop has the ability to use either ALSA or JACK as its audio input, meaning that it's a great choice if you're capturing a musical performance or tutorial.
Two things to keep in mind:
- If you want your video to sync up with sound, use either 24 or 25 frames per second.
compress on the flyis a bad option to use, so avoid that unless your computer is very powerful, or you simply haven't got the harddrive space for a full-quality video to be saved onto it even temporarily.
By default, the whole screen is recorded. If you don't need or want the whole screen to be recorded, you can set a specific area.
Click the Select Window button in the qt-recordmydesktop control panel. Click and drag on the preview window to set the “hot” area.
recordmydesktop will compress your video for you, and it usually does a good job of it. If you're unhappy with the results, you can try your hand at compressing the source video yourself using ffmpeg2theora or ffmpeg.