Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

How can I create a screencast on Ubuntu? What applications are available?

The app I'm looking for has ideally all of these features:

  1. Can record in a format that can be played back easily on any platform and/or accepted by youtube or another popular video site
  2. Can record just a window (instead of the whole screen), possibly selecting it with a mouse click
  3. Can start recording after a configurable delay (e.g., I launch the app and have time to do arrangements to my desktop/window before actual recording starts)
share|improve this question
add comment

18 Answers

up vote 68 down vote accepted

gtk-recordmydesktop install gtk-recordmydesktop

Adds an easy to use graphical icon on the GNOME toolbar to make a pleasure use and configure the audio and video capture and screencast application recordMyDesktop.

screenshot of gtk-recordmydesktop

xvidcap install xvidcap

A screen capture enabling you to capture videos off your X-Window desktop for illustration or documentation purposes. It is intended to be a standards-based alternative to tools like Lotus ScreenCam.

Video can be saved in MPEG or AVI files format.

share|improve this answer
    
Thanks for these two suggestions! I've tried them both, but could get neither to do what I need: gtk-recordmydesktop insists on recording the whole virtual screen (3200x1200), which is way too large... xvidcap lets me select a rectangular area of the screen to be recorded, but then wants to place its control buttons on top of it (and moves the area if you move the controls), which doesn't work for recording a window almost as tall as the screen (I'm using a tiling window manager). –  Riccardo Murri Sep 20 '10 at 13:03
1  
Success with the command-line version of xvidcap: xvidcap --audio no --file testvid.avi --cap_geometry xwininfo | fgrep geometry | cut -c12-. This won't work with windows that don't report pixel-based geometry (e.g., xterm), so one should give the recording window location explicitly as widthxheight+x+y, as in xvidcap ... --cap_geometry 1336x1170+0+0 –  Riccardo Murri Sep 22 '10 at 10:09
3  
We've removed xvidcap from the repository now because it's no longer maintained. –  popey May 14 '12 at 7:40
1  
@RiccardoMurri: gtk-recordmydesktop does allow you to record only a selected screen area. Just drag a rectangle in the preview area. –  MestreLion Sep 21 '12 at 4:47
    
Actually select what window to record by using the windowid option. You can check the window id of a window using the xwininfo utility –  tomodachi Jan 10 '13 at 14:02
add comment

I like Byzanz; it records your activity as a GIF file.

enter image description here

It's pretty light and works well, especially for putting a shorter screencast on a webpage or in an email.

sudo add-apt-repository ppa:fossfreedom/byzanz
sudo apt-get update && sudo apt-get install byzanz

For further information:

How to create animated GIF images of a screencast?

share|improve this answer
1  
Wow! This too cool to get only 28 votes. –  Ufoguy Dec 13 '13 at 9:22
add comment

This is what I use to make screencasts, the cli command that comes with recordmydesktop

recordmydesktop --width 1920 --height 1200 --full-shots --fps 15 --channels 1 --device hw:1,0 --delay 10

The delay 10 gives me 10 seconds to "prepare" my desktop before it starts recording. When I'm done I hit ctrl+c, then it starts encoding the file.

I have a dual display, and the width/height argument lets me focus recording on one of my monitors. By adjusting this value I can also record onto my second monitor.

Other pointers:

share|improve this answer
3  
Look up recordmydesktop --help via terminal for more info (or just click the link). –  its_me Nov 28 '12 at 16:20
add comment

kazam Install kazam is a good application for this purpose.

It gives you a delay before recording. Recording is done in HD and the output is in .mkv format which is accepted for YouTube so there is no need to convert and re-render.

share|improve this answer
1  
I've tried recordmydesktop, and for me kazam works better. –  ThiagoPonte Jul 16 '13 at 13:24
add comment

Tibesti

Tibesti Screencaster is a program for Ubuntu that allows you to record your screen and your microphone and/or audio out sounds.

Screenshot from OMG!Ubuntu!

To install add the PPA ppa:ackondro/tibesti (How to add a PPA) and then install tibesti from the software center.

Alternatively, open a terminal and paste:

sudo add-apt-repository ppa:ackondro/tibesti
sudo apt-get update
sudo apt-get install tibesti
share|improve this answer
    
First thing i looked was the last changelog. I like it that it says 2011. And it looks like it is progressing nicely for when natty comes out. i will try it out but i read it does not yet work with 3D OpenGL stuff. –  Luis Alvarado Apr 5 '11 at 16:33
    
@alukik, can i got this code sudo apt-get install tibesti, that's would be work? –  Jose King Apr 5 '11 at 16:38
    
user13499, the answer has been updated with step-by-step instructions from console. –  Scaine Apr 5 '11 at 18:37
1  
the framerate issue has resolved itself –  d3vid Oct 12 '11 at 6:02
1  
Afaik, tibesti does not install on ubuntu 11.10. A pity, because it looks really interesting to me. –  nathanvda Mar 22 '12 at 20:58
show 2 more comments

Have a look at Wink.

There are two tutorial projects created in Wink which you can view. Use the Help, View tutorial menu options to render and view them before you start using Wink.

Features as told on their website:

  • Freeware: Distributed as freeware for business or personal use. However if you want to redistribute Wink, you need to get permission from the author.
  • Cross-Platform: Available for all flavours of Windows and various versions of Linux (x86 only).
  • Audio: Record voice as you create the tutorial for explaining better.
  • Input formats: Capture screenshots from your PC, or use images in BMP/JPG/PNG/TIFF/GIF formats.
  • Output formats: Macromedia Flash, Standalone EXE, PDF, PostScript, HTML or any of the above image formats. Use Flash/html for the web, EXE for distributing to PC users and PDF for printable manuals.
  • Multilingual support: Works in English, French, German, Italian, Danish, Spanish, Serbian, Japanese, Brazilian Portuguese and Simplified/Traditional Chinese.
  • Smart Capture Tools: Capture screenshots automatically as you use your PC, based on mouse and keyboard input (great time saver and generates professional captures).
  • Performance/Quality: Creates highly compressed Flash presentations (few kbs to few hundreds of kbs, much smaller than competing commercial products) ideal for using on the web.

Tutorials:

enter image description here

share|improve this answer
add comment

How to create an animated (GIF) screenshot

Added bonus with this approach is that you can post the screencast without embed tags on any forum that includes animated GIFs as embedded like this

The answers prior to mine have clearly answered how to create a video screencast. Now if you just want to show an animated screenshot, essentially an extremely short screencast in an image format (GIF, and not more than ~10 sec), it's also easy.

First create a screencast of what you want to show in the animated GIF. Then follow the instructions below...

You'll need Gimp, mplayer (WARNING! NOT mplayer2) and mencoder. Issue the following commands to install them.

sudo apt-get install gimp
sudo apt-get install mplayer
sudo apt-get install mencoder
sudo apt-get -f install

Alternatively, you can install them from the Synaptic package manager that comes with Ubuntu.

The following command breaks your screencast into a number of jpeg or png (based on which command you choose) images:

mplayer -ao null -ss 0:0:33 -endpos 2 eagles.avi -vo jpeg:outdir=Desktop/animated
mplayer -ao null -ss 0:0:33 -endpos 2 eagles.avi -vo png:z=9:outdir=Desktop/animated

Where, -ss 0:0:33 tells mplayer where you begin (0 hours, 0 minutes, 33 seconds), -endpos 2 tells mplayer where to stop (2 minutes), z=9 sets compression level for the output png images to 9, Desktop/animated is the directory (~/Desktop/animated/) where you want the images to be output to.

You can also tell mplayer where to stop, as a specific time, like so:

mplayer -ao null -ss 0:0:33 -endpos 0:1:12 eagles.avi -vo jpeg:outdir=Desktop/animated
mplayer -ao null -ss 0:0:33 -endpos 0:1:12 eagles.avi -vo png:z=9:outdir=Desktop/animated

Now you have the images, but you need to combine them into a single, animated GIF. This is really simple:

  • Start Gimp > File > Open as Layers > browse to the directory (~/Desktop/animated/), Ctrl+A to select all images, and click 'Open'.

  • Simple hit Shift+Ctrl+S or go to File > Save As... and name the image as 'animated.gif' > hit 'Save' > check 'Save as Animation' radio button > hit 'Export' > in the next window, simply hit 'Save' unless you know what you are doing.

That's it. You have your animated GIF ready!

Here's an example:

Animated GIF screenshot

PS: I am not very comfortable with the terminology when it comes to this kind of stuff, but I hope I am clear nevertheless. :)

SOURCE: http://www.youtube.com/watch?v=OhJtyblE_D0

share|improve this answer
add comment

You can also use ffmpeg to create a screencast. Example:

ffmpeg -f x11grab -r 25 -s 1024x768 -i :0.0 /tmp/output.mpg

Notes:

  • 0.0 is your display.screen number of your X11 Server. You can get the number with echo $DISPLAY
  • -r = frames per second
  • -s = resolution

To get audio:

ffmpeg -f oss -i /dev/audio -f x11grab -s 1280x1024 -r 3 -ab 11 -i :0.0 /tmp/out.mp4
share|improve this answer
    
and how does one get audio as well? –  Volomike Dec 10 '12 at 9:33
2  
Ah, I found the way: ffmpeg -f oss -i /dev/audio -f x11grab -s 1280x1024 -r 3 -ab 11 -i :0.0 /tmp/out.mp4 –  Volomike Dec 10 '12 at 9:43
add comment

Vokoscreen: A new screen casting tool for Linux

 sudo add-apt-repository ppa:vokoscreen-dev/vokoscreen
 sudo apt-get update
 sudo apt-get install vokoscreen

enter image description here

For More HELP

share|improve this answer
    
This works in Ubuntu 13.04 / Raring x86. –  Rudiger Wolf May 7 '13 at 10:34
    
this does not seem to have an option to choose one of the monitors -- if you have a multiple monitor setup –  Aras Jun 28 '13 at 19:22
add comment

This bash script is based on ffmpeg. It calculates the required resolution and record your desktop in high-definition.

Xaxis=$(xrandr -q | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)
Yaxis=$(xrandr -q | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)
ffmpeg -f x11grab -s $(($Xaxis))x$(($Yaxis)) -r 25 -i :0.0 -sameq ~/Video/output.mkv

Change the filename to your taste. This script can be found on github here.

share|improve this answer
1  
ffmpeg -s cif is a way to avoid xrandr calls! –  gavenkoa Oct 25 '13 at 15:30
1  
@gavenkoa cif is a video size alias for 352x288 which is a size I doubt anyone wants to use. –  LordNeckbeard Dec 22 '13 at 4:35
    
OK, all this sizes can be found in man 1 ffmpeg-utils... –  gavenkoa Dec 22 '13 at 14:53
add comment

Kdenlive is a free open-source video editor for GNU/Linux and FreeBSD, which supports DV, AVCHD and HDV editing. Kdenlive relies on several other open source projects, such as FFmpeg, the MLT video framework and Frei0r effects.

http://www.kdenlive.org/features

share|improve this answer
add comment

Check out this article about Screenkey

It turns your key strokes into highly readable subtitles overlaid on the recording. It seems like it would be incredible for tutorial and training type videos about CLI-based topics.

Not positive it fits all the original criteria, I will try to update later.

It's on Launchpad here

share|improve this answer
    
this makes for a great comment, not an answer. –  barraponto Mar 10 '12 at 18:15
add comment

___________________ Simple Screen Recorder __________________

SimpleScreenRecorder is a Linux program that I've created to record programs and games. There are programs that can do this, " but I wasn't 100% happy with any of them, so I created my own "

My original goal was to create a program that was just really simple to use, but as I was writing it I started adding more and more features, and the result is actually a fairly complex program. It's 'simple' in the sense that it's easier to use than ffmpeg/avconv or VLC :).

http://www.maartenbaert.be/simplescreenrecorder/

sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder
sudo apt-get update
sudo apt-get install simplescreenrecorder
# if you want to record 32-bit OpenGL applications on a 64-bit system:
sudo apt-get install simplescreenrecorder-lib:i386

enter image description here

share|improve this answer
    
It's not obvious after installation how you use your simplescrrenrecorder. what command gives hat interface? –  DrewV Aug 5 '13 at 5:59
    
@DrewV well you can start by searching in dash > simple screen , from command line you can open terminal and type simplescreen tab tab and enter –  Qasim Aug 6 '13 at 12:58
add comment

After trying everything, this is the solution I came up with:

Note: The "fake" ffmpeg from Libav has been depreciated (within Libav) and has been replaced by avconv from Libav. The "deprecated" message does not apply to the real ffmpeg from FFmpeg which is unaffected and is still under heavy development.

First install the required codecs:

sudo apt-get install libavcodec-extra-5*

Use the following command to record the screencast:

avconv -f alsa -i pulse -f x11grab -r 30 -s 1280x800 -i :0.0 -vcodec libx264 -acodec libmp3lame myscreencast.mkv

Change -s 1280x800 to whatever resolution you like.

more examples

all screen with given resolution and sound

avconv -f alsa -i pulse -f x11grab -r 30 -s 1024x768 -i :0.0 -acodec pcm_s16le -vcodec libx264  -threads 0 output.mkv

all screen with mouse following and sound

avconv -f alsa -i pulse -f x11grab -show_region 1 -follow_mouse 100 -r 10 -s 960x540 -i :0.0+10,200 -acodec pcm_s16le -qscale 0 -threads 0 output.mkv

Detailed options I know are following

  • -f: input file format
  • -i: input file name
  • -r: fps (Frame Per Second)
  • -s: frame size (width x height)
  • -i :0.0+10,200: size of squared area to follow
share|improve this answer
    
if you have two monitors, how do you select one of them to record? –  Aras Jun 28 '13 at 18:19
add comment

Using Ubuntu 11.04 natty on my laptop I've tried xvidcap, gtk-recordMyDesktop, and tibesti. Only tibesti lets me easily pick whether to record from the screen or microphone or both. Highly recommended.

share|improve this answer
add comment

I just installed RecordItNow http://www.piotrkrzyzek.com/screencasting-in-linux-with-recorditnow-pulseaudio) and Kazam.

RecordItNow seems more complete that Kazam as you can set the recording size. However, both seem primitive compared to this ScreenFlow shown in this tutorial on making screencasts: https://www.codeschool.com/screencasting

share|improve this answer
    
Isn't ScreenFlow only available for Mac at this time? –  its_me Nov 28 '12 at 15:40
    
yes -- a reason to use a Mac! –  justingordon Nov 28 '12 at 20:06
    
The codeschool link seems to be dead. –  Jobin Jan 30 at 11:11
add comment

Recently I tried to record a screencast with audio. I tried many of the options listed here and other websites. My goal was not to write a comprehensive summary of all tools available, but to find a single one which works.

In my case (after several hours of struggling) it was VOKOSCREEN which worked, so I did not look further. My system is Linux Mint 15 Olivia, 64-bit, which is based on Ubuntu Raring.

This is my summary/log which I wrote while experimenting. Hope it will save you several hours:

avconv: audio and video get out of sync, audio is lagging behind Tried all the options I could. This is the command line I used:

avconv -f alsa -i pulse -f x11grab -r 15 -s 1024x768 -i :0.0 -vcodec wmv1 -acodec pcm_s16le -q 7 b4.avi

Byzanz: creates animated gif (not tried, since I need sound as well and longer screencast)

Eidete: unable to install (with 20 years of Linux experience, didn't try forever though)

gtk-recordmydesktop: creates ogg which is fine, but unable to convert to anything. Best converter was mencoder but is speeds up video (but not audio) so they get out of sync.

istanbul: freezes immediately

Kazam: if record area larger than ~640x480 memory starts leaking, leaving at most a few minutes before system becomes unresponsive. Many have reported similar issue, this is a known bug.

pyvnc2swf: Is a tool to record a VNC session. Not convenient if you want to record your own screen (not tried)

screenkey: advertised as a "screencast tool", but is not about recording your screen

tibesti: seems to be no longer maintained (since 2011), does not even install

vokoscreen: FINALLY!!!! Quality is good: both audio and video. After recording I could compress the file to about 1:7 with mencoder without any loss of quality. I discovered that it uses the following command line:

ffmpeg -f alsa -i pulse -f x11grab -r 15 -s 1024x768 -i :0.0+0,0 -vcodec mpeg4 -acodec libmp3lame -ar 48000 -sameq -r 15 my.avi

xvidcap: As stated above: "We've removed xvidcap from the repository now because it's no longer maintained." (not tried)

wink: distributed as downloadable executable not as package, (not tried)

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.