Ubuntu – Washed out colours with screencast software but not screenshot on Ubuntu (all versions)

Ubuntuvideo

I have experimented with screencast software on Ubuntu over a number of LTS versions and using pretty much every software I can get my hands on. I have used VLC, RecordMyDesktop and some others the names of which escape me. I tried this when Ubuntu shipped with GNome and now with Unity as well. The problem is the same.

The colours are always washed out regardless of the software I use or the version of Ubuntu I am running. The answer seems to be to open a video editor and mess about with contrast, saturation and brightness to get something a bit more acceptable. The capture is generally rendered after capture as an OGG file and the image is all there just hidden under messed up settings.

I am yet to get my video to look the same as my screen shots even though when I take a static screen shot the colours and contrast and brightness are all exactly right (ie the same as what I see on the screen). So what I need to know is what I need to change to get the contrast and brightness settings back under control so they are right to start with.

I have Googled the living daylights out of this problem but have yet to find much help beyond the fact that the contrast and brightness are wrong by default.

I just want to record a screencast and then watch it in VLC or whatever and see what I saw when I made the cast.

There is probably a lot I do not know about Ubuntu/Linux even though I have been using it for years now so I am happy to be educated. That said I would appreciate being told if and how any backups should be made before trying something in case it does not work happily (not to mention how to recover from said fails).

If there is no known answer on the subject of why the contrast and brightness are wrong and how to fix it then at least something I put into practice to get close to screen colour as possible in the screencast.

Best Answer

Software

Install and configure screencasting software to produce high-quality desktop videos as follows:

  1. Uninstall libav to remove its ffmpeg version from the system:
    sudo apt-get --purge remove libav-tools
    sudo apt-get --purge autoremove
    
  2. Install FFmpeg from the following PPA:
    sudo add-apt-repository ppa:jon-severinsson/ffmpeg
    sudo apt-get update
    sudo apt-get install ffmpeg
    
  3. Install SimpleScreenRecorder:
    sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder
    sudo apt-get update
    sudo apt-get install simplescreenrecorder
    

Do not install ffmpeg from the static build as it does not include x11grab.

Record using SimpleScreenRecorder

  1. Run SimpleScreenRecorder.
  2. Click Yes, if prompted. NVIDIA Warning
  3. Click Continue.
  4. Select Record a fixed rectangle.
  5. Click Select window.
  6. Click on a window to record its contents.
  7. Optionally, uncheck Record audio.
  8. Click Continue.
  9. Set Container to mp4.
  10. Set Codec to Other.
  11. Set Codec name to libx264.
  12. Set Bit rate to 8192.
  13. Set Save as to recording.mp4.
  14. Uncheck Allow frame skipping.
  15. Click Continue.
  16. When ready, click Start recording.
  17. When finished recording click Pause.
  18. Click Save recording.

Record using FFmpeg

For a higher-quality recording, use ffmpeg directly. Save the following script to /usr/local/bin/capture.sh and make the script executable (e.g., sudo chmod 755 /usr/local/bin/capture.sh):

#/bin/bash
INFO=$(xwininfo -frame)
WIN_GEO=$(echo $INFO | grep -oEe 'geometry [0-9]+x[0-9]+' | grep -oEe '[0-9]+x[0-9]+')
WIN_XY=$(echo $INFO | grep -oEe 'Corners:\s+\+[0-9]+\+[0-9]+' | grep -oEe '[0-9]+\+[0-9]+' | sed -e 's/\+/,/' )

ffmpeg -f x11grab -y -r 30 -s $WIN_GEO -i :0.0+$WIN_XY -vcodec ffv1 -sameq output.avi

Use the above script as follows:

  1. Open a terminal.
  2. Change to a directory that has ample drive space.
  3. Ensure write permissions in the current working directory.
  4. Run: capture.sh
  5. Click on a target window.
  6. Press control+c in the terminal to stop recording.

The captured video will be saved as output.avi.

Playback

Depending on the video player, playback might appear to be washed out. Here are my findings:

  • mplayer - Washed out
  • vlc - Nearly perfect

See Also

Related Question