I make gaming videos and recently installed Ubuntu and I haven't been able to find a good screen recorder for gaming. Are there any recommendations (preferably free ones) that can record in HD, use multiple audio sources (i.e. Headset and computer sound), and is in the Ubuntu Software Center? If it's not in the software center I still might get it, just preferably in the software center. I've already tried Kazam Screencaster and RecordMyDesktop, but they didn't work out for me. Thanks guys!


Solution 1:

I can actually vouch for the answer that Grumbel made about recordmydesktop in the terminal. It has been the best one when it comes to resource usage. Also ffmpeg/avconv. But there are a couple of factors you should take into account when recording:

  1. How many RPM does your HDD have (Assuming you don't have an SSD in which case, do not worry about the hard drive). If it has 5400 RPM you have a bigger chance that when recording while playing, the video will not look smooth or the game play will feel slower. If it is 7200 RPM and to top it off, the HDD has a lot of cache (Like 16 MB, 32 MB or 64 MB) then you will have a better experience.

  2. What video card do you have. For example, I had a case where the user had an FX 5200. I mean, an actual Nvidia FX 5200. Really?.. There is no power in the world that will let you record a game while playing on that video card in a smooth and crystal clear way. So the better your video card is, the better the experience will be.

  3. CPU Power. Expecting to create the best and awesome gaming recording but have an Intel Celeron or an AMD Duron.. hell no. That video recording will really REALLY suck. If your CPU is not powerful enough (And side by side with it, your motherboard) then don't make an odd face when you see that recording while playing makes a lot of lag and that will make the video look awful.

From my experience, having a good computer with enough CPU, RAM, VIDEO and the other obvious stuff for it to record (Specially from experience the hard drive Read/Write speed) you can use Kazam for it (Since you are talking about HD). But not the Kazam that comes with the Software Center but the one that comes in the PPA. It has better performance the one that comes in the PPA. At least compared to the one in 12.04 or 12.10. If you want to try it then do the following:

sudo add-apt-repository ppa:kazam-team/unstable-series
sudo apt-get update && sudo apt-get install kazam

But take into consideration that:

  1. When recording, depending on the recording app, the video recorded can be send directly to the HDD/SDD, in which case it will eat some of the speed of the hard drive which will have an impact on how the game will feel. The other case, depending on the available amount of RAM, it will send it to RAM and then start to process it (coding the video on the fly), then writing to the disk in intervals.

  2. In any case, remember that the video will be in most cases being coded while recording the game. This means it will take a chunk of your RAM, CPU and HDD speed. So the more you have of any of this, the less impact you will feel.

  3. If your video card and/or CPU is optimized for specific coding techniques (For example H.264) then that will help a lot.

Notice I don't mention the sound. This is because sound has less of an impact to the performance of the PC than the actual video.

For an example I have here a VIDEO done using Ubuntu 13.04 on an Intel i7 2600 with 16 GB RAM and an Nvidia 560 TI. I have an Intel 120 GB SSD with an Intel DZ68DB motherboard... yeah I know.. all Intel. Anyway, you can see how the video behaves.

For multiple audio sources, Kazam (The one in the PPA) offers:

enter image description here

As you can see you have sound from Speakers and sound from Mic.

Solution 2:

RecordMyDesktop is the easiest solution, you use it like:

recordmydesktop \
    -o "/tmp/recording.ogv" \
    --fps 30 \
    --no-cursor \
    --full-shots \
    --on-the-fly-encoding \
    -x 22 -y 249 --width 320 --height 240

However it is slow and not fast enough for gaming at large resolutions. It also has issue when it comes to very long recordings, which tend to corrupt, so it's a good idea to stop and restart the encoding every 30min or so, to not risk a corrupt stream.

For proper game capture you need GLC, which is specifically written for OpenGL and only works with OpenGL apps. It's not in Ubuntu, but you can download the source and compile it yourself. Once compiled, you need to start your game via glc-capture with a line like:

glc-capture -l /dev/stdout -v 3 -i -j -o /tmp/recording.glc -b back your_game

GLC is fast enough for capturing games at 1280x720 or more depending on your computer.

If you need more flexibility when it comes to capturing multiple audio sources you can use pulseaudio tools. Most important is pavucontrol, it's a mixer app for pulseaudio that lets you decide what gets recorded and even switch recording sources at runtime. To select an recording device go to "Input Devices/All Input Devices" and select one named "Monitor of Build-in Audio Analog Stereo". All the Monitor ones allow you to record audio output. This is something you likely will have to do when using GLC and recordmydesktop, as I think by default they will record the line-in or something like that, not the actual speaker output.

Pulseaudio also comes with numerous modules that allow you to redirect or filter output. For example to create a virtual Soundcard that doesn't output to your speakers, you use:

pactl load-module module-null-sink sink_name=nullsink

Documentation can be a bit lacking, but it should allow you to do most things you might want to do. For just recording game audio and headset output separately, you can setup pavucontrol so that GLC records the game audio and then use a separate parecord to capture your headset.