This project adheres to Semantic Versioning.
- Remove dependency on
childprocess
andos
gems.
- Match "childprocess" gem version to
selenium-webdriver
. Closes #99. - Add support for screenshot resolution. Closes #98.
- Relax "os" gem version to minor level (#97). Thanks, hlascelles!
- Users can now select a ffmpeg capture device from advanced -> input.
- Fix a bug where some advanced parameters were not parsed correctly.
- Add support for audio stream capture (#15)
- Fix #84 where the user given ffmpeg binary path was never used.
- Relax childprocess gem version requirement to roughly match requirements in
selenium-webdriver
gem (#85) - Add support for capturing screenshots in both desktop and window modes (#44).
- Reattempt
ffprobe
execution up to times if the first try raisesErrno::EAGAIN
. Hopefully fixes #79.
- Support JRuby 9.2+ (#58)
- Add
ScreenRecorder::
as an alias forScreenRecorder::Window.fetch_title
. TheTitles
class will be removed in version 2.0.
- Separate input/output specific
ffmpeg
arguments through theadvanced
Hash. See example here. - Check for errors after starting the
ffmpeg
process to make sure the recording does not stop silently because of an error. Prints the error from the log if the process exists unexpectedly. - Now using
childprocess
gem to manage theffmpeg
process. This requires theffi
gem to be installed on Windows. See childprocess#132 for more information.
- Add support for macOS (#55). Thanks to Denys Bazarnyi for testing this and providing feedback.
- Force kill
ffmpeg
if it takes more than 10s to quit (#60). - Fix a bug where
ScreenRecorder.ffmpeg_binary=()
was not properly defined. ScreenRecorder::Titles#fetch
will now raiseNotImplementedError
when used in a Linux or a macOS environment. Only works on Windows.- Default
input
value on Linux is now:0
.
- Released first major version.
- Now uses
ScreenRecorder
as top level module.FFMPEG
is not directly exposed anymore. - The recording modes are now available through
ScreenRecorder::Desktop
andScreenRecorder::Window
classes to make the usage (parameters) simpler. - Method parameters are now keywords instead of an
opts
Hash. This means at least Ruby 2.0.0 is required. framerate:
is now to be passed through theadvanced
Hash.
- Gem will now be renamed to
screen-recorder
. Please refer to Issue #45 for more information.
- Reverted post install message as
screen_recorder
is already taken.
- Recording FPS (
framerate
) is defaulted to 15.0. - Gem will soon be renamed to
screen_recorder
. Please refer to Issue #45 for more information.
- Fixed an edge case in Microsoft Windows specific implementation of
WindowTitles#fetch
where processes with mismatching names and window titles, such as process"Calculator.exe"
with window title"CicMarshalWnd"
, were omitted (#35). This fix also prints a warning when this mismatch occurs. - Fixed bug in Linux specific
WindowTitles#fetch
implementation where the filter by application name logic was removed. This filter is required on Linux here becausewmctrl
returns all open window titles unlike Microsoft Windows wheretaskmgr
allows us get window titles by process name. - On Linux, you are now required to provide the
input
as"desktop"
or a display number, such as":0.0"
. Runecho $DISPLAY
to check your display number. - QOL improvements - Type checking of inputs, spec cleanup, added more tests, and fixed rubocop warnings.
⚠️ FFMPEG::RecordingRegions
is nowFFMPEG::WindowTitles
, so the module name is true to the function it provides.- Added support for for a user given path via
FFMPEG#ffmpeg_binary=()
. - Removed Bundler version requirement from gemspec to support all versions.
- Implement
#discard
(alias#delete
) to discard the video file. Useful when your test passes and you want to get rid of the video file.
- Fix a bug where the gem was incorrectly configured to be required as
ffmpeg/screenrecorder
instead ofscreen-recorder
. ScreenRecorder#start
now returns the IO process object in case the user has a use case for it.RecordingRegion#fetch
now logs a warning thatx11grab
for Linux does not supporting window recording.⚠️ Parameterinfile
is nowinput
to make it more intuitive.
- Fix bug in RecorderOptions where an incorrect object was referenced to read the user provided options.
- Stopping the screenrecorder now prints the failure reason given by the ffmpeg binary when
#stop
fails (Issue #7). - Log file is now defaulted to
ffmpeg.log
instead of redirecting to nul. log_level
now defaults toLogger::ERROR
instead ofLogger::INFO
.
Screenrecorder
class is nowScreenRecorder
.- Add support for Linux.
- Now an exception raised if the gem fails to find
ffmpeg
. - Fix a bug where a file named
nul
was created instead of directing the output toNUL
. - Fix a bug where
RecordingRegions#window_titles
was not returning anything because of missing return keyword.