ffscreencast - ffmpeg screencast/desktop-recording with video overlay and multi monitor support

My cool nickname 5165ffce3b CHANGELOG 9 лет назад
img 04df5c2c36 Added screenshots 9 лет назад
.gitignore cc4e696ae6 Initial commit 9 лет назад
.travis.yml acbdc94e4b travis 9 лет назад
CHANGELOG.md d93416226a CHANGELOG 9 лет назад
LICENSE 1a167d0015 Initial commit 9 лет назад
README.md 8b65952004 todo list 9 лет назад
composer.json 084c6e3395 Composer support 9 лет назад
ffscreencast 1fb88ee7c5 Fix bug while choosing device and input is empty 9 лет назад

README.md

ffscreencast (beta)

Features | Usage | Screenshots | Todo | Contribution | License | Version

Build Status Latest Stable Version Total Downloads Latest Unstable Version License Type

About

ffscreencast is a shell wrapper for ffmpeg that allows fool-proof screen recording via the command line. It will auto-detect all available monitors, cameras and microphones and is able to interactively or manually choose the desired recording device(s). Additionally ffscreencast will let you overlay the camera stream on top of the desktop session.

Besides that ffscreencast can act as an ffmpeg command generator. Every available option can also just show the corresponding ffmpeg command instead of executing it.

Screencast

Tested on
OSX Debian CentOS
OSX Debian CentOS
via AVFoundation via x11grab via x11grab
Requirements
Program Required Description
bash yes The whole script is written in bash and might not be 100% Posix compliant
ffmpeg yes The ffmpeg binary must be present
v4l2-ctl Linux Required for linux to list camera devices
arecord Linux Required for linux to list sound devices
xdpyinfo Linux Required for linux to list screends

1. Features

  • Screen recording
  • Camera overlay
  • Audio support
  • Allows to manually (parameter) or interactively choose monitor
  • Allows to manually (parameter) or interactively choose camera
  • Allows to manually (parameter) or interactively choose sound device
  • ffmpeg command generation

2. Usage

2.1 Overview

To simply start desktop recording your screen call the program without any arguments ffscreencast and it will use the default screen without camera overlay and without sound.

$ ffscreencast

Usage: ffscreencast [-s[num]] [-a[num]] [-c[num]] [--dry]
       ffscreencast --slist [--dry]
       ffscreencast --alist [--dry]
       ffscreencast --clist [--dry]

When invoked without any arguments, it will start screen recording
on the default screen without sound and without camera overlay.

Recording options (can be combined):
-s[num]       (Default) Enable screen capturing [with device number X]
-a[num]       Enable audio capturing [with device number X]
-c[num]       Add camera overlay [with device number X]

Behavior options (combine with recording- or list options):
--dry         Show the command (without executing)

List options:
--slist       List screen capturing devices (monitors)
--alist       List audio capturing devices (microphones)
--clist       List camera capturing devices (cams)

System information:
--help        Show this help screen
--version     Show version information
--test        Test requirements

The num (device numbers) can be omitted. If there is only one device of its type available, ffscreencast will automatically default to this device, otherwise it will ask interactively which device to use for recording.

2.2 Examples

Do a screencast on the default screen (without explicitly choosing the monitor)

$ ffscreencast

List monitors and record on monitor 2

$ ffscreencast --slist
Available screen recording devices:

[1] Capture screen 0
[2] Capture screen 1

$ ffscreencast -s2

List cameras

$ ffscreencast --clist
Available camera recording devices:

[0] FaceTime HD Camera

Start a screencast with camera overlay (only one camera present)

$ ffscreencast -c

or select the camera device

$ ffscreencast -c0

Show the ffmpeg command for camera recording

$ ffscreencast -c --dry

ffmpeg -hide_banner -loglevel info -f avfoundation -framerate 30 -i "1" -f avfoundation -framerate 30 -video_size 1280x720 -i "0" -filter_complex "overlay=main_w-overlay_w-10:main_h-overlay_h-10" "/Users/cytopia/Desktop/Screencast 2015-10-03 at 12.48.00.mkv"

3. Screenshots

Showing screen recording with and without camera overlay.

Screencast Screencast

4. Todo

  • Support for BSD
  • Support for Windows (via cygwin)?
  • Sound is still not working properly
  • Improve ffmpeg recording (better options)
  • Reduce Linux dependencies
  • Get camera device capabilities
  • Set camera resolution via cmd
  • Set camera position via cmd
  • Get sound device capabilities
  • Set sound options via cmd (channels [linux: alsa vs pulse])
  • Be able to record one or multiple screens

5. Contribution

Contributors are welcome.

6. License

license

7. Version

For a complete list of verion see CHANGELOG