This page documents the setup of a Linux system for screencasting

On Screen Display

Show Keyboard commands

When showing software it's usefull for the students to see which keyboard shortcuts are pressed. You can use screenkey, an on screen display (OSD) which should be installed like this: (Don't install from repository)

 git clone
 cd screenkey
 sudo ./ install

will install the screenkey application. Run with screenkey


Make sure to check "Show modifier sequences only" otherwise everyone can read your password inputs...

Show Mouse Clicks

There is a feature branch in the screenkey git which implements that, hopefully it will be merged into master once you read this.

Using v4l2loopback to stream in and out of OBS

Load the v4l2loopback kernel module and create two devices.

   modprobe v4l2loopback devices=2 video_nr=10,9 card_label="OBS Output","Canon 5D" exclusive_caps=1

Stream Canon 5D via USB

   gphoto2 --stdout --capture-movie | gst-launch-1.0 fdsrc fd=0 ! decodebin name=dec ! queue ! videoconvert ! tee ! v4l2sink device=/dev/video9


Stream from OBS to a virtual camera source

We can't stream directly from OBS into Jitsi, BigBlueBitton, Google Meet, Skype, etc. So we are using v4l2loopback for this. To install the v4l2sink for OBS follow these steps:

  apt install qtbase5-dev
  git clone --recursive
  git clone
  cd obs-v4l2sink
  mkdir build && cd build
  cmake -DLIBOBS_INCLUDE_DIR="../../obs-studio/libobs" -DCMAKE_INSTALL_PREFIX=/usr ..
  make -j4
  make install

In OBS, go to Menu → Tools → V4L2 Video Output

V4L2 Video Output.png

In BigBlueButton (or any other videoconferencing service) Select the virtual "OBS Output" as a video source.