How to capture a screen-cast on Linux

Recording

SimpleScreenRecorder

I recommend simplescreenrecorder Show archive.org snapshot , it produces an adequate output with only a few clicks. The audio recording contained some static noises, but that might be caused by my microphone.

Recording only a single screen or fixed rectangle is supported. The video quality seems quite grained when using the default settings - I found that using the MKV container, H.264 codec, "0" constant rate factor and "veryslow" preset results in the best video quality.

Peek

Note

The original peek project has been deprecated Show archive.org snapshot . If you are experiencing problems with peek, you might consider pypeek Show archive.org snapshot which has a very similar feature-set to the original peek.

If you don't insist on high the best video and you don't need audio recording, you could also use Peek Show archive.org snapshot , which is quite simple to use. It was formerly built to create animated GIFs but also supports MP4 videos. The settings are also limited. Suggested preferences:

  • Open file manager after saving
  • Output format: WebM
  • Delay in seconds before recording starts: 2

Don't launch on laptop screen with external screens

If you are using Peek and the window launches on your laptop's screen the window bar might be cut off from. Meaning that, you will not be able to drag the window around, click close and the start/stop button.
Solution: If this is the case disable the laptop screen in Settings > Display and it launch on your external screens instead with the right window size and position.

Editing

For minor manual adjustments, you can use the ffmpeg Show archive.org snapshot command line tool. In my case, I needed to cut the screen-cast by removing the sequence from 02:36 to 05:23.

# Extract the parts you want to keep.
# * Use -ss hh:mm:ss to define the starting point of the sequence (default: 0)
# * Use -t  hh:mm:ss to define the length of the sequence

ffmpeg -i screencast.webm -t 00:02:35 -c copy part1.webm
ffmpeg -i screencast.webm -ss 00:05:23 -t 00:20:00 -c copy part2.webm

# Create a textual list of all sequences
for i in {1..2}; do echo "file 'part$i.webm'" >> parts.txt; done

# Combine the 
ffmpeg -f concat -safe 0 -i parts.txt -c copy edited_screencast.webm

Using the -c copy flag make the process extremely fast since it prevents re-encoding. It also keeps the quality at the input level.

Audio Removal

Peek recordings will include any audio your device was playing during the recording. You can also use ffmpeg to remove your current techno playlist from an existing screencast:

ffmpeg -i screencast.webm -am -c copy screencast-muted.webm
Michael Leimstädtner About 4 years ago