Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/alphapapa/bashcaster

An actually simple screen recorder for Linux
https://github.com/alphapapa/bashcaster

ffmpeg linux screencast

Last synced: 3 months ago
JSON representation

An actually simple screen recorder for Linux

Awesome Lists containing this project

README

        

#+TITLE: Bashcaster
#+PROPERTY: LOGGING nil

# Note: This readme works with the org-make-toc package, which automatically updates the table of contents.

Bashcaster is a simple script that uses =ffmpeg= to record screencasts to videos or GIFs. It can record the whole screen or a window. It can optionally optimize GIFs with =gifsicle=.

* Installation
:PROPERTIES:
:TOC: 0
:END:

Put =bashcaster.sh= wherever you want.

** Requirements

Bashcaster only works on X-based GUIs. It should work on any Linux distro, and all common ones should have these tools available for installation:

+ =ffmpeg= does all the work behind the scenes.
+ =xprop= and =xwininfo= are used to retrieve screen and window dimensions.
+ =yad= shows the stop-icon tray notification and confirmation dialogs.
+ [[https://github.com/naelstrof/slop][slop]] is used when available to select rectangles, otherwise a fallback method is used.
+ =gifsicle= optionally optimizes GIFs.

* Examples

Record a window to a GIF:

#+BEGIN_SRC sh
bashcaster --window output.gif
#+END_SRC

Record a window to a GIF at 15 frames per second, with the mouse cursor, optimize it, and don't show confirmation prompts:

#+BEGIN_SRC sh
bashcaster -coy --window -f 15 output.gif
#+END_SRC

Record the whole screen to an MKV at 60 fps immediately, without confirmation:

#+BEGIN_SRC sh
bashcaster -f 60 -y output.mkv
#+END_SRC

* Usage

#+BEGIN_EXAMPLE
bashcaster.sh [OPTIONS] OUTPUT-FILE

Bashcaster is a simple script that uses ffmpeg to record screencasts
to videos or GIFs. It can record the whole screen or a window. It
can optionally optimize GIFs with gifsicle.

OUTPUT-FILE should end with the desired video type's extension,
e.g. ".mp4" or ".gif".

Click the stop-icon tray notification to stop recording.

Options
--debug Print debug info
--help I need somebody!

--force Overwrite output file if it exists
-y, --no-confirm Don't ask for confirmation before recording

-c, --cursor Record mouse cursor
-F, --fullscreen Record the whole screen (the default)
-R, --rectangle Select and record a rectangle
-W, --window Select and record a window

-f, --framerate NUMBER Video framerate (default: 30)

-l, --left NUMBER Video left edge position (default: 0)
-t, --top NUMBER Video top edge position (default: 0)
-h, --height NUMBER Video height
-w, --width NUMBER Video width

--max-colors NUMBER Limit colors in palette
-d, --dither Enable dithering to reduce filesize
-o, --optimize Optimize GIF with gifsicle
#+END_EXAMPLE

* Credits

+ Inspired by [[https://github.com/colinkeenan/silentcast][Silentcast]].
+ [[https://www.ffmpeg.org/][FFmpeg]] does all the work.
+ [[https://sourceforge.net/projects/yad-dialog/][YAD]] shows dialogs and the stop button.
+ Giphy posted a helpful [[https://engineering.giphy.com/how-to-make-gifs-with-ffmpeg/][guide]] ([[https://github.com/cyburgee/ffmpeg-guide][GitHub repo]]) showing how to record optimized GIFs with FFmpeg.

* Development

Bug reports, feature requests, suggestions — /oh my/!

* License

GPLv3

# Local Variables:
# eval: (require 'org-make-toc)
# before-save-hook: org-make-toc
# org-export-with-properties: ()
# org-export-with-title: t
# End: