Create silent mkv screencast and animated gif.
Shell Groff Python
Latest commit e8011f3 Dec 18, 2016 @colinkeenan committed on GitHub Merge pull request #36 from Seth-Johnson/master
Fixes #35 by correcting path to the unity_indicator icon
Permalink
Failed to load latest commit information.
manpages Added manpages and updated Ubuntu installation instructions Oct 22, 2015
.gitignore didn't want to commit the svg's Sep 30, 2014
1.png updated pngs and gifs for README.md Oct 13, 2014
2.png updated pngs and gifs for README.md Oct 13, 2014
2_Trans.png updated pngs and gifs for README.md Oct 13, 2014
3.png updated pngs and gifs for README.md Oct 13, 2014
3_Trans.png updated pngs and gifs for README.md Oct 13, 2014
LICENSE Initial commit Sep 11, 2014
README.md corrected optional dependency for KDE Plasma 5 in README Nov 28, 2016
SetArea.png updated pngs and gifs for README.md Oct 13, 2014
SetDir.png updated pngs and gifs for README.md Oct 13, 2014
SetFrom.png new pngs for README.md Oct 13, 2014
SetOut.png new pngs for README.md Oct 13, 2014
SetRate.png updated pngs and gifs for README.md Oct 13, 2014
Stop.png updated pngs and gifs for README.md Oct 13, 2014
bash_silentcast.desktop made a bash_silentcast.desktop so that after extracting silentcast-ma… Sep 28, 2014
convert-error.png updated pngs and gifs for README.md Oct 13, 2014
entirety.gif updated pngs and gifs for README.md Oct 13, 2014
fullscreen.gif updated pngs and gifs for README.md Oct 13, 2014
genffcom improved icons, replaced png images with svg images Dec 2, 2016
install improved icons, replaced png images with svg images Dec 2, 2016
interior.gif updated pngs and gifs for README.md Oct 13, 2014
no_root_install playing around with the look of the first dialog Oct 12, 2014
record.svg improved icons, replaced png images with svg images Dec 2, 2016
record1.svg improved icons, replaced png images with svg images Dec 2, 2016
record2.svg improved icons, replaced png images with svg images Dec 2, 2016
silentcast updated version # reported by silentcast script Dec 2, 2016
silentcast.conf worked out installing the conf file Nov 27, 2016
silentcast.desktop improved icons, replaced png images with svg images Dec 2, 2016
silentcast.svg improved icons, replaced png images with svg images Dec 2, 2016
stop1.svg improved icons, replaced png images with svg images Dec 2, 2016
stop2.svg improved icons, replaced png images with svg images Dec 2, 2016
temptoanim improved icons, replaced png images with svg images Dec 2, 2016
transparent.gif updated pngs and gifs for README.md Oct 13, 2014
transparent_window.py switching from sys to argparse in the python scripts so if ran outsid… Sep 28, 2014
uninstall improved icons, replaced png images with svg images Dec 2, 2016
unity_indicator.py Fixes #35 by correcting path to the unity_indicator icon Dec 18, 2016

README.md

Silentcast

Demos

Notice there's a stop icon stop1.png in the Notification Area before I even start Silentcast, then a 2nd stop icon stop2.png appears when recording begins. That's because I already had Silentcast running to make these animated gifs of how to use Silentcast. Silentcast 1 keeps going after I stop Silentcast 2.

Fullscreen: How to use Silentcast to record Gimp

fullscreen.gif

Transparent: How to use Silentcast to record 2 windows

transparent.gif

Interior: How to use Silentcast to only record the drawing

interior.gif

Entirety: How to use Silentcast to record 1 window

entirety.gif

Guides

Getting Silentcast

Dependencies (Arch package names used)
package reason
bash because Silentcast is mostly bash scripts and I use bashisms
ffmpeg for recording and extracting images
imagemagick for 'convert' to animate images
yad for the GUI - popup dialogue windows
xdotool for getting the active window id
xorg-xrandr for getting screen size
xorg-xwininfo for getting window size and position
wmctrl for resizing and positioning windows
python-gobject for 'gi.repository' which has Gtk
python-cairo for making Gtk+ window transparent
xdg-utils for 'xdg-open' to open the file-browser

Desktop Environment Requirements

Installing Dependencies by Distro

Arch
  • If running KDE Plasma 5, install libappindicator-gtk2
  • If running Gnome, install Topicons
  • Install what you can with pacman
$ sudo pacman -S bash ffmpeg imagemagick xdotool xorg-xrandr xorg-xwininfo wmctrl python-gobject python-cairo xdg-utils
  • Install yad from the AUR (or from the archlinuxcn repo).
Ubuntu
  • If running KDE Plasma 5, install the gir1.2-gtk-3.0 and gir1.2-appindicator3-0.1 packages.
  • If running Gnome, install Topicons
  • Install what you can with apt-get
$ sudo apt-add-repository -y ppa:webupd8team/y-ppa-manager
$ sudo apt-get update
$ sudo apt-get install bash libav-tools imagemagick x11-xserver-utils xdotool wininfo wmctrl python-gobject python-cairo xdg-utils yad
$ sudo ln -s /usr/bin/avconv /usr/bin/ffmpeg
Fedora
  • If running Gnome, install Topicons
  • Make sure you have the multimedia repository, rpmfusion
$ su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm'
  • Now install everything with yum
$ sudo yum install bash ffmpeg ImageMagick xdotool wmctrl xdg-utils yad
openSUSE
  • Install ffmpeg by getting the multimedia codecs for either KDE or Gnome by clicking the appropriate button at opensuse-community.org/, and letting YaST do the install for you. Trust the keys and resolve the conflict by choosing the first option which will switch to the Packman repository.
  • Install everything else with zypper
$ sudo zypper install bash ImageMagick yad xdotool xrandr xwininfo wmctrl python-gobject python-cairo xdg-utils
  • That's all you need to run Silentcast, but to watch the mp4 or webm files, I recommend installing Google Chrome as follows
$ sudo zypper ar http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome
$ sudo zypper ref
$ sudo zypper in google-chrome-stable

Try it before you install it! (If you already installed it, uninstall before trying this.)

  • Install the dependencies as listed above, Download Latest Release of Silentcast from github.com, and extract.

  • In Xfce, you can just double click bash silentcast in the extracted folder. Seems as though most other desktops don't default to running in the same directory as the launcher, so you'll have to run it in the terminal.

  • Here's an example of running it from the terminal:
$ cd ~/Downloads/silentcast-1.7
$ bash silentcast
  • That's it! Nothing will be installed to your system folders, and you can get rid of Silentcast just by deleting the download and extracted folder.
  • If you want to make the bash silentcast launcher work instead of doing a full install, edit bash_silentcast.desktop in a terminal and put the full path in, for example Exec=/home/colin/Downloads/silentcast-1.7/silentcast and Path=/home/colin/Downloads/silentcast-1.7/

  • Note that if you have done a full install of Silentcast, you will end up running portions of that installation when running bash silentcast. So, to try out this method, first uninstall the full installation of Silentcast.

Any Linux Distro Full Install Without Root Access

  • Install missing dependencies (see the Dependencies table and Installing Dependencies by Distro above)
  • Download a version of Silentcast:
  • Should always work as intended: Download Latest Release of Silentcast from github.com
  • Most likely working right: Download Silentcast master.zip from github.com
  • Probably broken when in active development, otherwise the same as master: Download Silentcast next.zip from github.com
  • Extract. Then, from a terminal, cd into the extracted directory and ./no_root_install Uninstall instructions are provided in the output of the no_root_install script. You can also see them in the comments to the launcher. See options with ./no_root_install -h. If installed to the default location, uninstall with the following commands: rm -r ~/.silentcast and rm ~/.local/share/applications/no_root_silentcast.desktop
  • See what version you've got with silentcast -v. Check for a newer version
Any Linux Distro Full Install
Arch Linux Full Install
  • Use an AUR helper, like yaourt -S silentcast. This will automatically install the latest release and missing dependencies. Keep your install up to date the usual way with your AUR helper, like yaourt -Syua. Uninstall with sudo pacman -R silentcast
  • Without an AUR helper, just Download silentcast.tar.gz from aur.archlinux.org, extract, and do makepkg -si from the extracted directory. This will do exactly the same thing as an AUR helper would do for installation, but you will have to keep track of updates yourself. Uninstall with sudo pacman -R silentcast
Ubuntu Linux Full Install
  • For supported releases run the following commands to install Silentcast (If the PPA/repositories are out of date or for older versions of Ubuntu follow one of the "Any Linux Distro" instructions):
$ sudo add-apt-repository ppa:sethj/silentcast
$ sudo apt-get update
$ sudo apt-get install silentcast

Or run the following, condensed, command:

$ sudo add-apt-repository ppa:sethj/silentcast && sudo apt-get update && sudo apt-get install silentcast
  • Uninstall
    Run sudo apt-get remove silentcast. You can then remove the PPAs with sudo add-apt-repository -r like so:
$ sudo add-apt-repository -r ppa:sethj/silentcast && sudo apt-get update

Launch Methods

  • Menu Hierarchy
    • Graphics -> Silentcast
    • Multimedia -> Silentcast
  • Search Box Terms
    • silentcast
    • screencast
    • record
    • gif
    • (and other things will work too)
  • ALT+F2
    • silentcast
  • Terminal
    • silentcast
    • Or, if you haven't actually installed silentcast, but installed the dependencies, downloaded and extracted silentcast-master, then: bash silentcast from within the extracted directory.

Find Silentcast in the menu under either Graphics or Multimedia, type silentcast into the search box, or ALT+F2 silentcast. It can also be run from a terminal as silentcast.

Dialogs: Set 3 2 1 Record Stop Convert

Set Working Directory

SetDir.png

A directory named silentcast will be created if it doesn't already exist, and that's where temp.mkv and anim.gif will go, but where should silentcast go? (If you are already running another instance of Silentcast, it will create silentcast/silentcast if it doesn't already exist.)

  • /home/you (your home directory) is the default choice

  • /tmp or /dev/shm (your RAM disk) After images are generated, you may want to free some memory to allow the creation of anim.gif to happen:

    • Move temp.mkv out of memory and onto your hard drive to save it (or delete it otherwise)
    • Stop the thumbnailer that's been working overtime keeping up with all the images (in Xfce the thumbnailer is tumblerd)
    • Use htop to find out what else is taking up too much memory that you can stop
  • other (you need to type in an existing directory here)

Set Area

SetArea.png

  • Fullscreen
    • Records the entire screen. Dialog 1 will be next because dialogs 3 and 2 aren't needed.
  • Transparent Window Interior
    • Records the area defined by a transparent window. The next dialog will be 3 and it will popup along with a transparent window which you can use to outline the area of the screen you want to record. The transparent window will automatically close before recording begins.
  • Interior of a Window
    • Records the interior of the "next active window" which is the window that will become active after closing dialog 2. The interior may include a menu bar or other UI elements, but does not include the title-bar or borders.
  • Entirety of a Window
    • Records the "next active window" which is the window that will become active after closing dialog 2. The entire window will be recorded, including the title-bar and borders.

Set Frames per second

SetRate.png

The default Frames per second is 8 which plays back at a reasonable speed and smoothness in gif animations served from a website. Higher frame rates will be smoother but will require a lot of memory to create. Beyond a certain rate, and playback may be too slow. Seems to work reasonably well up to 50 Frames per second though.

Choose How webm or mp4 videos will be made

SetFrom.png

The default behavior makes webm or mp4 videos directly from temp.mkv, but this doesn't allow for editing. If you want, you can edit frame-by-frame by choosing ew-???.png as an answer to Videos made from:. Then, before allowing the video to be made, view the frame-by-frame png images and delete unnecessary ones.

Select Outputs

SetOut.png

By default, anim.gif is already checked, but you can remove that. Check as many as you want in the final output. If not checked, any png images that were generated as an intermediate step will be deleted. You do not have to check the png images to be able to make videos from png images.

3 Auto Resize

If you didn't Choose Fullscreen on the opening dialog, you'll get a countdown of dialogs starting with 3. This dialog will look and behave differently depending on whether or not you chose Transparent Window Interior.

No Transparent Window

3.png

This one explains that after choosing a size, you will have to choose what window to resize by clicking on it. The mouse pointer will change to a + shape until you click a window. Nothing will happen if you click a maximized window, so you should unmaximize the window you want to record before clicking OK on this dialog, unless you want it maximized.

Transparent Window

3_Trans.png

Since Silentcast put the transparent window up, it knows what you are resizing so that there's no need to click on any windows. As soon as you choose a size and click OK, it will resize the transparent window.

WxH

You can also enter your own size. The WxH choice is there to remind you that the first number is the width and the second number is the height and there should be an x between those numbers with no spaces. You can actually enter the new size on any line though.

2 Manual Resize and Position

2.png

When automatically resizing, the previous dialog moved the window to the top left corner. This dialog gives you a chance to move and further resize the window.

2_Trans.png

If you are using a transparent window, this is the time to define the exact area to be recorded. After clicking OK, the transparent window will close, but the area for recording will be set to where the interior of that window was.

1 Get Ready

1.png

Just one last chance to get yourself and the screen ready for recording which will begin as soon as you click OK.

Record

There's no dialog, but during recording there will be a stop icon in the system tray notification area. That icon will will indicate if it is the 1st or 2nd instance of Silentcast running: stop1 stop2

Stop

When you click the stop icon in the system tray notification area, you'll see a progress dialog and your file browser open to the silentcast folder as it makes images from the recording, then the Prepare Images dialog will popup:

Stop.png

If you choose to automatically delete a lot of images to create a smaller anim.gif or because your system can't handle so many images at once, then as the dialog explains, entering 1 will delete every other image, 2 will delete 2 out of every 3 images, etc. Convert will adjust timing so playback of anim.gif won't move too fast.

In addition to automatically deleting images, you may choose to "edit" the yet to be made anim.gif by selectively deleting images. Just view an image in any viewer and move forward through them to see frame by frame what anim.gif will look like. Then, if you notice for example that your mouse cursor makes a slow pointless circle, just delete those images. For more ideas on what can be done while this dialog is up, see List of Tips below.

Convert

After preparing images and clicking OK, you'll see a progress dialog as convert works on making anim.gif. If successful, Screencast has finished it's job.

However, if you don't have a large enough swap (or no swap as with my own system) and run out of memory, convert may crash, and you'll see this dialog popup:

convert-error.png

After clicking OK, you'll be back at the Prepare Images dialog so that you can delete unneeded images or make other changes that will allow convert to complete anim.gif.

List of Tips

In a future release, after I've used Silentcast for a while, I'll have a list of tips here. I'm thinking of command line stuff to for example insert an animated gif of you drawing on one of the images in the animated gif you're working on so that you can circle or highlight something in the animation. However, I haven't tried it yet and want to release this version 1.0 now.