Code Monkey home page Code Monkey logo

ssr's Introduction

SimpleScreenRecorder

SimpleScreenRecorder is a screen recorder for Linux. Despite the name, this program is actually quite complex. It's 'simple' in the sense that it's easier to use than ffmpeg/avconv or VLC :).

There is a separate repository for SimpleScreenRecorder packages: https://github.com/MaartenBaert/ssr-packages

Screenshot

License

GNU GPL v3 - read 'COPYING' for more info.

Compiling

Important: If you have already installed SSR using the package manager of your distribution, you should uninstall it first before continuing!

First install the required dependencies (see below). After you have done that, you can compile and install SSR by running:

./simple-build-and-install

In order to use OpenGL recording for 32-bit applications on a 64-bit system, you need to compile a 32-bit version of libssr-glinject.so. The script will do this automatically if your system is 64-bit. Unfortunately some distributions (older versions of Debian, Ubuntu, Linux Mint, ...) don't properly support compiling 32-bit libraries on a 64-bit system, which results in errors related to missing libraries (usually libGL, libGLU) even when those libraries have in fact been installed. The problem is caused by the fact that the required symlinks are included in the -dev packages, but the 32-bit -dev packages can't be installed. The simplest solution is to skip compilation of the 32-bit GLInject library, which can be done by running:

ENABLE_32BIT_GLINJECT=FALSE ./simple-build-and-install

You can then use SSR without the 32-bit library, or you can use the precompiled 32-bit library provided by your distribution.

If you actually want to compile the 32-bit library, you have to manually create the missing symlinks in the 32-bit library directory:

cd /usr/lib/i386-linux-gnu
sudo ln -s libGLU.so.1 libGLU.so
sudo ldconfig

The OpenGL library libGL.so is a special case, because on some distributions (Ubuntu, Linux Mint, ...) it is installed in a different location depending on which driver you are using. If your distribution has installed the file libGL.so.1 in the regular 32-bit library directory /usr/lib/i386-linux-gnu (e.g. Debian), then run this:

cd /usr/lib/i386-linux-gnu
sudo ln -s libGL.so.1 libGL.so
sudo ldconfig

Otherwise you need to figure out where the library is installed first, and then manually create symlinks from the regular 32-bit library folder to this file. Note that doing this may interfere with OpenGL functionality if you ever switch to a different driver, or even just update the driver (in the case of NVIDIA). In that case you will need to manually remove the symlinks and (optionally) recreate them.

If you are using a combination of open-source and proprietary drivers (e.g. for laptops with Intel + NVIDIA GPUs a.k.a. 'Optimus'), follow only the steps for the open-source drivers.

If you are using one of the open-source drivers (i915, radeon, nouveau), then run this:

cd /usr/lib/i386-linux-gnu
sudo ln -s libGL.so.1 mesa/libGL.so
sudo ln -s mesa/libGL.so libGL.so
sudo ln -s mesa/libGL.so.1 libGL.so.1

If you are using the proprietary AMD driver, first figure out where the fglrx directory is located, this can be /usr/lib32 or /usr/lib/i386-linux-gnu. Then go to the relevant folder and create the symlinks:

cd /usr/lib/i386-linux-gnu
sudo ln -s libGL.so.1 fglrx/libGL.so
sudo ln -s fglrx/libGL.so libGL.so
sudo ln -s fglrx/libGL.so.1 libGL.so.1

If you are using the proprietary NVIDIA driver, first figure out where the fglrx directory is located, this can be /usr/lib32 or /usr/lib/i386-linux-gnu. Then go to the relevant folder and create the symlinks:

cd /usr/lib/i386-linux-gnu
sudo ln -s libGL.so.1 nvidia*/libGL.so
sudo ln -s nvidia*/libGL.so libGL.so
sudo ln -s nvidia*/libGL.so.1 libGL.so.1

Note that the full name of the 'nvidia' subdirectory includes the driver version number, so you will need to fix these symlinks whenever the driver has been updated.

If you want to compile step-by-step (without simple-build-and-install), you can use the following steps:

mkdir build-release
cd build-release
cmake -DCMAKE_INSTALL_PREFIX="/usr" -DCMAKE_BUILD_TYPE=Release ..
make
sudo make install

Note that you may need to specify additional options depending on which Linux distribution and CPU architecture you have. The simple-build-and-install script detects the correct options automatically, you can run it to see which options you need.

You don't need to install the program to use it, but installing will give you a desktop entry and an icon. Also, if you don't install the program, you will need to specify where the GLInject libraries are located with LD_LIBRARY_PATH when using OpenGL recording.

Compilation issues

Most of these issues are avoided when using simple-build-and-install, but you may run into them if you run cmake directly.

FFmpeg vs Libav confusion

Libav is a fork of FFmpeg that was created in 2011 as a result of a conflict between the developers. Some Linux distributions (including Debian and Ubuntu) switched to Libav because the package maintainers were among the Libav developers, while others stuck to FFmpeg. In order to deal with this situation, SSR supports both FFmpeg and Libav. In 2015 Debian and Ubuntu decided to switch back to FFmpeg for technical reasons, which means that these days very few SSR users are still using Libav. Although Libav is theoretically still supported by SSR, I am no longer doing any testing with it. As of 2020 Libav is effectively no longer being developed, so Libav support may be dropped entirely at some point in the future.

Since the FFmpeg and Libav APIs have changed significantly over time, SSR checks which version of the libraries is being used to determine which features are safe to use. Although the FFmpeg and Libav API are almost identical, there are some minor differences, mostly related to the version numbering scheme. Unfortunately SSR can not determine automatically whether you are using FFmpeg or Libav, so you have to specify this manually when running cmake, using the ENABLE_FFMPEG_VERSIONS option, which defaults to TRUE (i.e. FFmpeg). If you are using Libav, you should add the option ENABLE_FFMPEG_VERSIONS=FALSE. If you forget this, you will likely get various error messages during compilation related to missing functions, structures or fields.

You can check whether you are using FFmpeg or Libav by running the following command:

grep "This file is part of" `pkg-config --variable=includedir libavcodec`/libavcodec/avcodec.h

This command should print either This file is part of FFmpeg or This file is part of Libav.

Qt 4 MOC bug

When compiling with Qt 4 on some newer distributions, you may get the following error message from AutoMoc:

[...]/ssr/src/Global.h:52: Parse error at "defined"

This is caused by a Qt bug which has been fixed in Qt 5, but has not been backported. The file path reported in the error message is wrong, the actual problem is triggered by line 52 in /usr/include/sys/sysmacros.h. To work around the bug, add the following option when running cmake:

cmake [...] -DCMAKE_AUTOMOC_MOC_OPTIONS="-D_SYS_SYSMACROS_H_OUTER"

Alternatively, if your distribution provides Qt 5 packages, you can also use these instead. For Debian and Ubuntu, you would do this by installing qt5-qmake, qtbase5-dev and libqt5x11extras5-dev. The simple-build-and-install script will detect and use these automatically. If you run cmake yourself, you should add the option -DWITH_QT5=TRUE to use Qt 5 instead of Qt 4.

Build dependencies

You will need the following packages to compile SimpleScreenRecorder:

  • GCC (>= 4.6)
  • cmake
  • pkg-config
  • Qt4 (4.8 or newer) or Qt5 (5.7 or newer)
  • ffmpeg or libav (libavformat, libavcodec, libavutil, libswscale)
  • ALSA library
  • PulseAudio library (optional, disable with -DWITH_PULSEAUDIO=FALSE)
  • JACK library (optional, disable with -DWITH_JACK=FALSE)
  • libGL (32 and 64 bit)
  • libGLU (32 and 64 bit)
  • libX11 (32 and 64 bit)
  • libXfixes (32 and 64 bit)
  • libXext
  • libXi
  • libxinerama
  • video4linux2 (V4L2) library

If you have a 64-bit system and you want to compile the 32-bit GLInject library, you have to install some 32-bit libraries as well. Otherwise the regular packages are sufficient.

Debian / Ubuntu

For newer versions (with Qt5):

sudo apt-get install build-essential cmake pkg-config desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev \
qt5-qmake qttools5-dev qtbase5-dev libqt5x11extras5-dev libavformat-dev libavcodec-dev libavutil-dev \
libswscale-dev libasound2-dev libpulse-dev libjack-dev libx11-dev libxext-dev libxfixes-dev libxi-dev \
libxinerama-dev libv4l-dev

For older versions (with Qt4):

sudo apt-get install build-essential cmake3 pkg-config desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev \
qt4-qmake libqt4-dev libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libasound2-dev libpulse-dev \
libjack-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libv4l-dev

Extra dependencies for 32-bit GLInject on 64-bit systems:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install g++-multilib libgl1-mesa-dev:i386 libglu1-mesa-dev:i386 libx11-dev:i386 libxfixes-dev:i386

Note: Debian <= 7 and Ubuntu <= 14.04 are affected by Debian bug #689088 (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689088), which makes it impossible to install the 32-bit and 64-bit libGL/libGLU development packages at the same time. You should use the following command instead:

sudo apt-get install g++-multilib libglu1-mesa:i386 libx11-dev:i386 libxfixes-dev:i386

Next you should apply the workarounds described in the 'compiling' section.

OpenSUSE

This list is incomplete but usually sufficient:

sudo zypper install gcc libffmpeg-devel libqt4-devel libpulse-devel libjack-devel \
glu-devel libX11-devel libXext-devel libXfixes-devel libXi-devel

Some packages (e.g. ffmpeg) are not in the official repository, but can be installed from the Packman repository. You can add the Packman repository with this command:

zypper addrepo -f http://ftp.gwdg.de/pub/linux/packman/suse/12.3/ packman

Extra dependencies for 32-bit GLInject on 64-bit systems:

sudo zypper install gcc-32bit libstdc++47-devel-32bit glu-devel-32bit libX11-devel-32bit libXext-devel-32bit libXfixes-devel-32bit

Fedora

sudo yum install qt4 qt4-devel ffmpeg-devel alsa-lib-devel pulseaudio-libs-devel jack-audio-connection-kit-devel \
make gcc gcc-c++ mesa-libGL-devel mesa-libGLU-devel libX11-devel libXext-devel libXfixes-devel

Some packages (e.g. ffmpeg) are not in the official repository, but can be installed from the RPM Fusion repository. You can add the RPM Fusion repository with this command:

rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm \
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

Extra dependencies for 32-bit GLInject on 64-bit systems:

sudo yum install glibc-devel.i686 libgcc.i686 mesa-libGL-devel.i686 mesa-libGLU-devel.i686 \
libX11-devel.i686 libXext-devel.i686 libXfixes-devel.i686

Other files you may want to read

notes.txt contains notes about the design of the program. It's a good idea read this first if you want to make changes to the code.

todo.txt contains a list of things that I still need to do. This file changes a lot of course.

ssr's People

Contributors

arifpedia avatar bilelmoussaoui avatar borancar avatar cges30901 avatar danirod avatar deevad avatar eson57 avatar estea8968 avatar freddii avatar ghostkeeper avatar greenlunar avatar kicer86 avatar lyon667 avatar maartenbaert avatar olesyagerasimenko avatar probonopd avatar r-value avatar slokhorst avatar sysms avatar szamanx0 avatar timxx avatar tokyogeometry avatar trebmuh avatar urbalazs avatar utuhiro78 avatar veticia avatar welaq avatar yaakov-belch avatar yurivict avatar zvicko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ssr's Issues

Audio no longer syncs after update

So since the update today SSR no longer syncs audio for me :(

Possibly due to you now using ffmpeg, ffmpeg refuses to sync audio on my pc :(:
03f6129
If I read that right.

Trouble recording video

I was able to record screencasts of my desktop in any file format, not sure how long this has been in the waiting and going on.
screenshot at 2013-10-08 19 35 26

Crash when start recording is clicked.

Once I click on start recording SSR crashes.

==================== Starting SSR ====================
[DetectCPUFeatures] CPU features: mmx sse sse2 sse3
[FastScaler::FastScaler] BGRA to YUV420 converter: Fallback
[PageRecord::PageStart] Starting page ...
[PageRecord::PageStart] Started page.
[PageRecord::CaptureStart] Starting capturing ...
[X11Input::Init] Using X11 shared memory.
[PageRecord::CaptureStart] Started capturing.
[X11Input::run] Input thread started.
[FastScaler::Scale] Using swscale for scaling.
[PageRecord::RecordStart] Starting recording ...
[Muxer::Init] Using format matroska (Matroska).
[BaseEncoder::CreateCodec] Using codec libx264 (libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10).
[libx264 @ 0x2c059e0] using SAR=1/1
[libx264 @ 0x2c059e0] using cpu capabilities: MMX2 SSE2 SSE3 Cache64
[libx264 @ 0x2c059e0] profile High, level 3.2
[libx264 @ 0x2c059e0] 264 - core 123 r2189 35cf912 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x3 me=dia subme=1 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.25 pb_ratio=1.25 aq=1:1.00
[BaseEncoder::run] Encoder thread started.
[DetectCPUFeatures] CPU features: mmx sse sse2 sse3
[FastScaler::FastScaler] BGRA to YUV420 converter: Fallback
[Muxer::run] Muxer thread started.
[PageRecord::RecordStart] Started recording.
[Synchronizer::run] Synchronizer thread started.
Gtk-Message: (for origin information, set GTK_DEBUG): failed to retrieve property `GtkRange::activate-slider' of type `gboolean' from rc file value "((GString*) 0x25af440)" of type `GString'
[1]    20148 segmentation fault  simplescreenrecorder

System Information

Linux jerk 3.10-2-amd64 #1 SMP Debian 3.10.7-1 (2013-08-17) x86_64 GNU/Linux

Feature request: Multiple X11inputs.

I know livestreaming is not the main focus of this but I would like to ask for some basic features that would be useful mostly for livestreaming.

Being able to record multiple things at the same time and overlay them all in one video would be useful. This should work like this:

BlankInput: this would be the base of the video, would have the final resolution, as an option would be nice to be able to use an image for this (as a background, or it could be the first and/or bigger input).

InputVideo#: This would be the input video and it would overlay on top of the prev overlay, if this is the first Input it would be on top of BlankInput, if this is the second Video it would be on top of BlankInput+InputVideo1...
This input would have a position X and Y on top of the prev overlay and Width and Height (It should be scaled most of the time).

FinalOverlay: This is what is going to be send to the encoder.

As an example, I get this using ffmpeg and some python code to make my life easier, this should be the final product: http://www.twitch.tv/uyniko/c/2775743

You should be able to use Libavfilter to do this and you should only need to provide multiple Inputs, but I'm not really sure of this.
As an extra would be nice if you would be able to handle Images and Text as an input.

Feature Request: Live Visual Annotations

When I'm making a screencast, I find myself using the mouse to show things to the viewer. For example, I use the mouse cursor to point to something (even though the mouse cursor is small and hard to see - and the window manager option to change cursor size is ignored by some applications), and I may select some text that I am talking about (if the target window lets me do the required selection).

An alternative approach, which is much more work to produce, is to annotate the screencast video during post-production with visual pointers and selections.

It would be cool if the screen recording application provided its own options for live visual annotations so that I could easily point to things and highlight things in a visually obvious manner while making the screencast.

As far as I can tell (from a limited amount of Googling), no existing screen recording software has this type of functionality.

How this could work:

  • SimpleScreenRecorder would provide a palette of visual annotations that can be selected while recording a screencast. (Necessarily this palette will take up screen real-estate, so this will work better when only part of the screen is being recorded, although special keyboard shortcuts could also be defined to drive the annotation palette.)

Examples of useful visual annotations are:

  • A palette of arrows (the main option would be to choose the direction of the arrow, e.g. N, S, W, E, NW, NE, SW, SE). Once chosen, a transparent arrow moves with the mouse cursor, until the user clicks, when the arrow becomes fully visible and stays there, until next time the user clicks anywhere.
  • A rectangular selection. User could choose colour and width (but default to red and perhaps 5 pixels). Once chosen, the user clicks and drags to define the highlighted region. The rectangle remains there until the user clicks anywhere.
  • For all visual annotations, by default the annotation disappears as soon as the user clicks anywhere, but an option could be set before the annotation is chosen, which causes it to remain in position until explicitly deleted. (This would allow an annotation to remain in place while the user performs actions within the application being recorded. It would also allow multiple annotations to exist at the same time.) To facilitate easy deletion of persistent annotations, the palette would have to display a list of persistent annotations in order of creation. There would also be a "Clear all" button, because most of the time that's what you will want to do once you have finished doing something that is highlighted by a particular set of visual annotations.

Potentially the UI for adjusting and deleting annotations could be included with the annotations themselves, but I'm guessing that would be harder to implement (so leave it out of any initial implementation), and it would risk interference between the annotation UI and the UI of the application being recorded.

There is a final alternative, which is to develop a visual annotation application that does all of the above, and which exists completely independently of any particular screen-recording application.

You are fantastic.

I'm using this for LD27, and SSR works fantastically in arch linux.

Once you see this issue, please close it, and remember for the rest of the day how fantastic you are that you wrote this software.

I would have posted this elsewhere, but I have no idea if you have any social media

Wine DLLS.

Not sure if this has been answered but i have an issue with wine games running seperate from wine steam. Upon running Deus Ex (patched with a launcher required to make it work), it first starts with a dialog box that uses MSVC++ 2012 which means it requires 'msvcp2010.dll'. Running this seperate from ssr it works fine but running it from ssr gets this result.

err:module:attach_process_dlls "msvcp100.dll" failed to initialize, aborting
err:module:LdrInitializeThunk Main exe initialization for L"D:\\Steam\\SteamApps\\common\\Deus Ex\\system\\deusex.exe" failed, status c0000005

This isn't being run as root so it should work ok. All i can think of is a environment variable not being set but i can run it from a shortcut from my desktop so i have no idea.

Thanks for any help.

Extra options

It would be nice if we could pass arguments to the decoders i.e, with avconv we can set -g for GOP settings.

an example for avconv that we should support:

avconv \
    -f x11grab -s $INRES  -b "$BRATE" -i :0.0+0,0 \
    -f alsa -ac 2 -i pulse \
    -vcodec libx264 -g 60 -s $OUTRES -preset $QUAL \
    -acodec libmp3lame -ar 44100 -threads 4 -qscale 3 -b 1000k -minrate 1000k -bufsize 128k \
    -f flv "rtmp://live.justin.tv/app/$STREAM_KEY"

Allow audio from soundcard to record as well

Hi there.

Love the app, but either I can't see how to make it record sound (monitor) as it plays from the sound card, or it's not currently an option. Easy to enable/disable a mic.

If this is a feature, could you please explain how to enable it, and if not, are there any plans to include such a feature. Seems odd that the option isn't there, or is unclear how to enable it.

Thanks heaps,
Baldrick

Feature request: Display information over the screen

It would be nice if it was possible to display optionally information about recording starting/pausing/running, etc.. over the screen (which doesn't get captured). Also an fps display regardless of recording or not would be nice!
(not appropriate for a ticket but...) Keep up the great work :)

Feature request: Indicator that recording has started

Hi,

First, thanks for this great software!

My issue is this: I am using this program for recording presentations. When I start recording I have my presentations ready in full screen and then press the keyboard combination to start. Earlier this morning I finished a 40 minute presentation to frustratedly find out that my recording did not start.

It would be great if there would be any indicator that recording has started (like the countdown some other apps have) or perhaps a sound.

I know this is difficult because one might want to start immediately without the countdown delay and other kind of indicators might get recorded as parts of the screen.

Still, if this could be made possible and perhaps as an option I would be very happy :)

Design and Branding

The Simple design of SSR is pretty good for simplicity-sake and clean usage. However, I think the app could use some polishing and I know the name is for a reason but it kind of confuses the novice user as it meaning that it isn't a powerful app and this app is freaking awesome and has tons of powerful features...just hidden in a simple presentation.

So I would suggest some polishing of the design and if willing to do it...an app name change for some proper branding of the app.

I would help with both of these things as this is what I do for a living...design and branding that is.

I did design and rebranding for uGet Download Manager...the GUI is relatively the same but that will change soon and the next major branch will be all me in design. uGet Downloader Website - http://uget.visuex.com

Feature Request: Compilation options

It would be great if more options was added to the ./configure script to disable functions which not everyone wants.
Examples:

  • Disable/Enable pulseaudio (libraries required to compile but not really necessary to record sound in ssr I guess). Correct me if I'm wrong though

PS: I'm maintaining a Gentoo ebuild for ssr. It can be found here https://github.com/anders-larsson/gentoo-overlay/

Feature request: Yellow dot behind mouse pointer on mouse click

I am planning to make some tutorial webcasts and need a way to higlight mouse clicks, so that the viewers can se where I am clicking. It would be nice if SSR coud have a feature that allowed me to turn on "click highligting". There should be a large dot showing up behind the mouse pointer when the mouse button is clicked - with a nice animation.

Feature request: Multiple recordings in a single session

It would be great to be able to record more than one file from a single launch of the application to be recorded. As it stands I can pause and resume, but if I save my recording then I need to relaunch the application I am recording.

Specifically, I am recording a game using OpenGL. Because the inject shm changes when I go through the wizard again, video will no longer be captured if I attempt to just cycle through and start recording again with my game still running. If there were a way to hold that open it would be great, especially during the new user fiddling with settings to get it all working right stage.

Flash cannot be recorded

When trying to record a flash game called Gravity Runner I got only a green screen in place where the game should be. Even recording the entire screen, the Flash Player is "greened out".

I guess this is some sort of copyright protection, but I'm not sure that makes it illegal to try and circumvent this. And it's not that I'm not trying to steal resources or anything, there are better ways to do that...

Link to game: http://www.ragdollsoft.com/gravityrunner/

Feature request: Follow Window

This would be similar to FollowMouse instead you would follow a window, shouldn't be to hard to implement but you have to consider a few things:

  1. The geometry of a window might change so the image would need to be scaled if needed.

  2. Window Managers are a pain in the ass, you might need special cases to get the position and gemoetry of a window on some WM. As an example this is what I do to get the geometry and position of a window (Python code):

def getgeometry(self, window):

    #              TODO 
    #
    # Get other Window Managers geometrys

    WMid = self.root.get_full_property(self.display.intern_atom('_NET_SUPPORTING_WM_CHECK'), 0).value[0]
    WMwindow = self.display.create_resource_object('window',WMid)
    WMname = WMwindow.get_full_property(self.display.intern_atom('_NET_WM_NAME'), 0).value

    if WMname == "KWin":
        x = window.query_tree().parent.query_tree().parent.get_geometry().x + window.query_tree().parent.get_geometry().x
        y = window.query_tree().parent.query_tree().parent.get_geometry().y + window.query_tree().parent.get_geometry().y
        height = window.get_geometry().height
        width = window.get_geometry().width

    elif WMname == "Mutter (Muffin)" or WMname == "Openbox":
        x = window.query_tree().parent.get_geometry().x + window.get_geometry().x
        y = window.query_tree().parent.get_geometry().y + window.get_geometry().y
        height = window.get_geometry().height
        width = window.get_geometry().width

    else:
        x = window.get_geometry().x 
        y = window.get_geometry().y
        height = window.get_geometry().height
        width = window.get_geometry().width

    return (x, y, width, height)

Recording internal audio

I'm very happy cause I discovered this software that is pretty good for desktop recording and it was really what I've been searching for a wile...
I am wondering... Is it possible to edit the settings for recording the audio of the microfone and also the internal audio of the computer?

Running Sluggish and Locking Up with Saucy Salamander.

Hi Maarten,

After upgrading my system SimpleScreenRecorder started locking up when I click the preview button and recording is impossible. I uninstalled and reinstalled, so I have the updated version of Saucy and still the same. My system is as follows:

Processor : 3x AMD Phenom(tm) 8600B Triple-Core Processor
Memory : 3774MB (482MB used)
Operating System : Ubuntu 13.10
-Display :Radeon 3100
Resolution : 2880x900 pixels
OpenGL Renderer : Unknown
X11 Vendor : The X.Org Foundation
-Multimedia-
Audio Adapter : HDA-Intel - HDA ATI SB

Any suggestions?

Be Blessed!!!

Elbennit
LuvLinuxOS

UX and Profiles (save settings into profiles for quick/easy selection)

I really like the simplistic GUI of this app...it is very simple, quick and easy but I think it could be even more simple and straight forward.

The intro "page" every time you open the app is rather annoying. i have to waste time clicking through it every time. Not a lot of time but it adds up.

The multiple "pages" every time you want to record is rather bad UX...it is still quite fast if you just click through fast.

I would like it to save "profiles" or something so I can create multiple settings that I may want to use for various recordings and then the intro page be a simple "choose profile"...start/pause recording. Then the rest could be Settings/Preferences based via Profiles.

Example: Ubuntu users could save profiles like "720p include Launcher and Panel (x0y0)" or "720p exclude Unity".

libssr-glinject.so does not have SONAME information

Hello,

first I want to thank you for this project. This is exactly what I was looking for the last days.
Getdeb.net is an Ubuntu software site I am working for and I am planning to publish your package there.
As a starting point I took the packages in the PPA and did some changes:
https://launchpad.net/~maarten-baert/+archive/simplescreenrecorder/+packages

The last lintian warnings/errors which are left are there and I need your help for this:
W: libssr-glinject: shlib-without-versioned-soname usr/lib/x86_64-linux-gnu/libssr-glinject.so libssr-glinject.so
N:
N: The listed shared library in a public library directory has an SONAME
N: that does not contain any versioning information, either after the .so
N: or before it and set off by a hyphen. It cannot therefore be represented
N: in the shlibs system, and if linked by binaries its interface cannot
N: safely change. There is no backward-compatible way to migrate programs
N: linked against it to a new ABI.
N:
N: Normally, this means the shared library is a private library for a
N: particular application and is not meant for general use. Policy
N: recommends that such libraries be installed in a subdirectory of
N: /usr/lib rather than in a public shared library directory.
N:
N: To view the SONAME of a shared library, run readelf -d on the shared
N: library and look for the tag of type SONAME.
N:
N: There are some special stub libraries or special-purpose shared objects
N: for which an ABI version is not meaningful. If this is one of those
N: cases, please add an override.
N:
N: Refer to Debian Policy Manual section 10.2 (Libraries) and Debian Policy
N: Manual section 8.6 (Dependencies between the library and other packages
N: - the shlibs system) for details.
N:
N: Severity: normal, Certainty: possible
N:
N: Check: shared-libs, Type: binary, udeb
N:
E: libssr-glinject: pkg-has-shlibs-control-file-but-no-actual-shared-libs
N:
N: Although the package does not include any shared libraries, it does have
N: a shlibs control file. If you did include a shared library, check that
N: the SONAME of the library is set and that it matches the contents of the
N: shlibs file.
N:
N: SONAMEs are set with something like gcc -Wl,-soname,libfoo.so.0, where 0
N: is the major version of the library. If your package uses libtool, then
N: libtool invoked with the right options should be doing this.
N:
N: Note this is sometimes triggered for packages with a private shared
N: library due to a bug in Debhelper.
N:
N: Refer to http://bugs.debian.org/204975 and http://bugs.debian.org/633853
N: for details.
N:
N: Severity: important, Certainty: certain
N:
N: Check: shared-libs, Type: binary, udeb
N:

The SONAME contains the library name+version and you do not seem to use it yet.
The version also will be in the package name (e.g. libssr-glinject0.7) allowing to have multiple versions installed.
I have no idea however how to set this up. Can you have a look at it?
When I have the new debian directory ready you will get a pull request.
I think the debian directory should be inside some subdirectory like "packaging".

Thanks

Kind regards
Christoph Korn

[Feature Request] Profiles.

Would it be possible to add profile manager, so it would be easier to switch between different recording settings.
I think it would be appreciated by people who sometimes stream & sometimes record.

X11 recording entire screen error and opengl recording help - Ubuntu 13.04 64 bit

Hello,

I just started using this software and it seems to be great compared to glc. However I'm running into a few problems:

  1. When recording the entire screen (non opengl option), I get this error while recording:

[YUVConverter::Convert] Warning: Memory is not properly aligned for SSE, using fallback converter instead. This is not a problem but performance will be worse.

Sometimes it also states the audio may be getting out of sync. The audio format is uncompressed, video is ffvhuff, and container is mkv.

  1. When recording with opengl, it normally requires I enter a command in the advanced options; while you explained what to type in for steam games, you never explained about recording opengl games that do not use steam. Since I plan to play opengl games not only through steam, I was wondering if this would be possible without having to resort to recording the entire screen using x11 (which I believe the other options utilize).
  2. I noticed I can choose different codecs and containers, while this is nice, attempting to choose the avi container will cause no audio to be recorded. Audio would be recorded with the mkv container so there's something strange going on. Also on the topic of audio, do you have any way for me to adjust the uncompressed sample rate that I record at. Your program seems to default to 44100 hz and while this is decent, in the end it's cd quality sample rate. I wish to record at 48000 hz and maybe even adjust the sample bit rate. Both of these options are not present for your uncompressed audio output. However I did notice that your program was not the only one with this 44100 hz issue, glc did a similar problem when I recorded with it. The one thing that you have in common with it (besides opengl support), is that you also record alsa audio. Could alsa have anything to do with it? If so, is there any way for me to change it?
  3. I was having a difficult time compiling your program from source, as I noticed you require compiling of 32 bit libraries. Unfortunately I run a 64 bit operating system and I'm trying to avoid to install 32 bit libraries when I can. Not only that, but how would I begin to compile 32 bit libraries in a 64 bit system. I'm very new to compiling and programming is not my strong suit, so unfortunately I don't know the ins and outs of compiling. If you could help me out, that'd be great. The main reason for me compiling in the first place was to correct any errors that I received from your ppa, which I'm currently using. I noticed that if a deb or ppa doesn't work, the next step would be to compile, and compiling usually solves certain issues.

Thank you for taking the time to read this and I wanted to say great job on all the work you're doing with this program. The ability to record opengl or non opengl based games in gnu/linux would be great and would help out people like me who have used programs like fraps and dxtory in windows. I was hoping glc would solve that, but it seems to have hit a dead end. I hope this project continues!

Custom Region Identifying Frame

This is not an important feature but it would be very useful for UX.

You can select the size of the region specific to the area from top/left and the size of the overall area via numeric values instead of just selecting...this is AWESOME but unfortunately you can't see how large exactly that is...in case you want to resize windows to only that area.

I wouldn't want this frame there while recording...just during setup so windows can be resized if needed.

Screenshot (using recordmydesktop)
Region Frame

PS. this app is the best recorder I have ever tried and I am pretty sure I have tried them all...they all failed at one VERY IMPORTANT aspect or another...SSR was flawless through them all...now just needs a bit of polishing and tweaking.

Unable to Update completely

I had an update for SSR and the only thing able to update was the SimpleScreenRecorder-lib, and not the SimpleScreenRecorder itself. I am attaching a screenie of the error I get when I try to mark it for upgrade. I have even tried sudo apt-get dist-upgrade and no luck there either. I am running Ubuntu 13.04.
screenshot at 2013-09-24 20 15 51

Feature Request: Option to display fixed rectangle persistently

The fixed rectangle boundary displays when the text cursor is in one of the rectangle input fields (i.e. Top, Bottom, Width or Height). But if I go to my target window and move it around, the rectangle boundary disappears. So to get window placement just right, I have to round trip a few times between clicking in one of the input fields and adjusting the target window.

It would be nice if there was a checkbox option to persistently display the fixed rectangle boundary.

An alternative way to adjust the target window is to look at the preview, but the preview is smaller, and the preview would be largely superfluous in this case, if the fixed rectangle boundary was displayed.

Problem with recording of audio

I tryed my first recording with ssr and everything was fine when, after 17 minutes of recording, the audio started to be not in a good quality and not synchronized with the video (like 4 or 5 seconds after of the real moment)...
My settings were Matroska as extention, codec H.264, constant rate factor 23, preset very fast, codec vorbis and bitrate 128 kbps
What can I do for solving that?

Failure to install from package on Ubuntu 13.04

When I run

sudo apt-get install simplescreenrecorder

after

sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder
sudo apt-get update

I get:

The following packages have unmet dependencies:
 simplescreenrecorder : Depends: libpulse but it is not installable

When I run Synaptic on my system, I see a libpulse0 and a libpulse-dev, but no libpulse. (I do know that pulse was upgraded to version 3.0 when I upgraded to Ubuntu 13.04.)

Build fails on debian wheezy

Hi, I'm running debian wheezy 64 bit.
Why are lib 32 necessary?

Anyway, ./simple-build-and-install stop here:
checking for XOpenDisplay in -lX11... no

What do I need more to compile ssr?

problem with codecs (not installed)

SSR says H264 and MP3 codec are not instaled while i have both, libx264 and libmp3lame.

Im on LinuxMint 15 64bit.

Tried build it from srouce and nothing changes.

What am i missing?

./configure issue?

I hate to leave a post about an ./configure error but I have tried multiple things without any success. I am running Ubuntu 10.04 x64. I have installed all of the dependencies required per the instructions and built the latest version of libav. The ./configure supposedly cannot find av_guess_format in -lavfromat. I noticed that there are two locations that host the avformat.h file. The first location is /usr/include/libavformat and the second location is /usr/local/include/libavformat. The first location's avformat.h file does not reference av_guess_format but the second location has it. I am figuring the ./configure is searching the first location and finding the avformat.h without av_guess_format.

Any advise would be helpful

Thanks
Nathaniel J. Morris

No icon when doing Alt-Tab (switching applications)

I see the red-green-blue SSR icon in my desktop shortcut (on Ubuntu 13.04), but when I'm running SSR and I do Alt-Tab to switch applications, the icon there is completely blank.

(I don't think this has to do with icon size, because the application switcher shows some application icons at full resolution, and other application icons scaled up from smaller icons. So I'm guessing that as long as at least one icon size is available, the application switcher will use it.)

Feature request: tabbed GUI

The app is very nice, but wizard-GUI is wearisome a little bit. Could you implement optional tabbed GUI please?

Slowed-down audio

Hey there,

Got a problem. Recorded audio is slowed down. I've had a look at my default sample rate and that seems to be fine (44100). Here is an example and its log (which contains an error about audio going out of sync): https://copy.com/Dp4iGEadBhqa

Notice the audio is lower pitched than it should be and quickly goes out of time with the video. Anyone know how to fix this?

Thanks,
UHR

Pause/Resume Shortcut Keybinding

I think it should be changed to Super + Alt + S by default because this is an unused shortcut by most ,if not all, distros and apps. Ctrl + R will cause issues with some apps like Browsers, Filezilla and others. It is freaking awesome that it is customizable and so easy to do that but I think it should be changed for compatibility issues as well as how easy the key is to do with your left hand. It would still be a two finger shortcut on most keyboards.

so please make it,
Start/Stop = Super + Alt + S

Audio out of sync

Hello, nice to see that you keep working on this amazing program.

I'm having issue with audio synchronization, for the first testing video it was fine, but now it's pretty bad. I installed ssr from repo on Ubuntu 12.10. Recording minecraft with default OpenGL settings, codes: H.264 and Vorbis.

If you need to see any logs, please let me know.

Segmentation Fault When Using H.264 on Ubuntu 13.10

Sometime in the last week or so, I noticed that SimpleScreenRecorder has begun consistently crashing when I try to record a video using the H.264 codec.

vil@clevo:~$ simplescreenrecorder
==================== Starting SSR ====================
SimpleScreenRecorder: 0.1.1
Qt: header 4.8.4, lib 4.8.4
libavformat: header 53.21.1, lib 53.21.1
libavcodec: header 53.35.0, lib 53.35.0
libavutil: header 51.22.1, lib 51.22.1
libswscale: header 2.1.0, lib 2.1.0
[DetectCPUFeatures] CPU features: mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 avx
[FastScaler::FastScaler] BGRA to YUV420 converter: SSSE3
[PageRecord::PageStart] Starting page ...
[PageRecord::PageStart] Started page.
[PageRecord::RecordStart] Starting recording ...
[Muxer::Init] Using format mp4 (MP4 format).
[BaseEncoder::CreateCodec] Using codec libx264 (libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10).
[libx264 @ 0x1c7a500] lookaheadless mb-tree requires intra refresh or infinite keyint
[libx264 @ 0x1c7a500] using SAR=1/1
Segmentation fault (core dumped)

Other codecs work fine, and the segmentation fault happens no matter what type of container is selected. Other apps, like Handbrake, don't appear to have any problem encoding to H.264 on the same system.

This was working previously, when I recorded videos for a class a couple of weeks back, so I'm unsure what's changed other than regular Ubuntu updates.

I've tried:

  1. Deleting configuration files and restarting.
  2. Uninstalling and re-installing from the Ubuntu PPA.
  3. Uninstalling and build/installing from git

Yet, I still have the same symptoms. I do not see any crash or log files. The only thing in my .ssr directory is the settings file.

Any help troubleshooting this further would be greatly appreciated, as I really do prefer using this program over the alternatives. If there's any additional info I can provide, just let me know and I'll get it for you!

save filenames sequentially

i enjoy using the program except for the repetitive clicks to actually record, this includes saving the filename as well. please allow for one click recording and not overwriting existing filenames but naming them sequentially should the file already exist. e.g testvideo.webm , testvideo-2.webm etc

something similar to qt-recordmydesktop and it one-click recording/pause/stop tray icon.

Segmentation Fault on Ubuntu 13.10

zach@blue:~$ simplescreenrecorder 
Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 14: reading configurations from ~/.fonts.conf is deprecated.
==================== Starting SSR ====================
SimpleScreenRecorder: 0.1.1
Qt: header 4.8.4, lib 4.8.4
libavformat: header 53.21.1, lib 53.21.1
libavcodec: header 53.35.0, lib 53.35.0
libavutil: header 51.22.1, lib 51.22.1
libswscale: header 2.1.0, lib 2.1.2
[DetectCPUFeatures] CPU features: mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 avx
[FastScaler::FastScaler] BGRA to YUV420 converter: SSSE3
QInotifyFileSystemWatcherEngine::addPaths: inotify_add_watch failed: No space left on device
QFileSystemWatcher: failed to add paths: /home/zach/.config/ibus/bus

(simplescreenrecorder:12889): Gtk-CRITICAL **: IA__gtk_widget_get_direction: assertion 'GTK_IS_WIDGET (widget)' failed

(simplescreenrecorder:12889): Gtk-CRITICAL **: IA__gtk_widget_get_direction: assertion 'GTK_IS_WIDGET (widget)' failed
[PageRecord::PageStart] Starting page ...
[PageRecord::PageStart] Started page.
[PageRecord::RecordStart] Starting recording ...
[Muxer::Init] Using format flv (FLV format).
[BaseEncoder::CreateCodec] Using codec libx264 (libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10).
[libx264 @ 0x1982ac0] lookaheadless mb-tree requires intra refresh or infinite keyint
[libx264 @ 0x1982ac0] using SAR=1/1
Segmentation fault (core dumped)

I am using the 0.1.1-1~ppa1~saucy1 version from the PPA. I am also on amd64 with the Nvidia 304.88 proprietary driver.

openSUSE build warnings

First of all I would like to thank for the greatest screencasting tool I've ever seen!

I've decides to promote an openSUSE package and haven't got any serious problem, but have got two warnings:

[ 113s] libssr-glinject.x86_64: W: shared-lib-calls-exit /usr/lib64/libssr-glinject.so exit@GLIBC_2.2.5
[ 113s] This library package calls exit() or _exit(), probably in a non-fork()
[ 113s] context. Doing so from a library is strongly discouraged - when a library
[ 113s] function calls exit(), it prevents the calling program from handling the
[ 113s] error, reporting it to the user, closing files properly, and cleaning up any
[ 113s] state that the program has. It is preferred for the library to return an
[ 113s] actual error code and let the calling program decide how to handle the
[ 113s] situation.
[ 113s]
[ 113s] simplescreenrecorder.x86_64: W: no-manual-page-for-binary simplescreenrecorder
[ 113s] Each executable in standard binary directories should have a man page.

It would be wonderful if you fixed/implemented it.

Wishlist: AppIndicators Additions to Streamline for Frequent Use

I've tried pretty much every other screen recording app on Linux, and think this one is the best of the bunch. I have just a few minor wishlist items for the interface that I think would make it even better:

The interface, as it is, is great for new users. But, once you've set up your commonly used container, codec, etc. settings, it's rather cumbersome to use. I think there is some low-hanging fruit here that would really streamline use for power-users.

  • Add a Start-Minimized option to the main dialog. Starting SSR directly t the appindicator tray. I know there are different ways users can already start it minimized by using functionality of the various window managers, but they generally leave it in the manager's taskmanager list - at least that's my experience on KDE).
  • In the appindicator/systray menu, allow the 'Start Recording' button to be clicked (using the last used settings) without requiring that the user bring up the main dialog and click through all screens first.

The above two items make it possible for power-users to put it in their startup apps and have it available for recording tutorials on the fly. That's the only advantage Istanbul has over SSR right now.

  • Add Video and Audio input items to the appindicator menu, so that (at any time) the user can view the current setting (capture rectangle, follow cursor, fullscreen...) and change them (when recording is stopped).
  • Add a 'File' item to the appindicator menu that shows the destination filename, container, and codecs. When clicked, it would open the existing dialog to the File settings page (or tab, if you go that direction).

These two items will allow the power users to quickly change settings without opening the full dialog, and verify that they have changed to another mode in a previous session before clicking the Start Recording option.

These changes won't affect first-time users at all, but will make the program much more efficient for users that frequently record tutorials/demos.

Arm builds fail

https://pmbs.links2linux.de/package/live_build_log?arch=armv7l&package=simplescreenrecorder&project=Multimedia&repository=openSUSE_12.3_ARM

[ 522s] In file included from elfhacks.c:20:0:
[ 522s] elfhacks.h:56:4: error: #error neither __elf32 nor __elf64 is defined
[ 522s] elfhacks.c:34:37: error: unknown type name 'ElfW_Sword'
[ 522s] elfhacks.c:422:37: error: unknown type name 'ElfW_Sword'
[ 522s] elfhacks.c: In function 'eh_set_rela_plt':
[ 522s] elfhacks.c:456:2: warning: implicit declaration of function 'eh_find_next_dyn' [-Wimplicit-function-declaration]
[ 522s] elfhacks.c:460:3: warning: implicit declaration of function 'ELFW_R_SYM' [-Wimplicit-function-declaration]
[ 522s] make[2]: *** [libssr_glinject_la-elfhacks.lo] Error 1
[ 522s] make[2]: *** Waiting for unfinished jobs....
[ 522s] In file included from Hook.cpp:13:0:
[ 522s] elfhacks.h:56:4: error: #error neither __elf32 nor __elf64 is defined
[ 523s] make[2]: *** [libssr_glinject_la-Hook.lo] Error 1

https://pmbs.links2linux.de/package/live_build_log?arch=armv6l&package=simplescreenrecorder&project=Multimedia&repository=openSUSE_Factory_ARM

[ 720s] In file included from elfhacks.c:20:0:
[ 720s] elfhacks.h:56:4: error: #error neither __elf32 nor __elf64 is defined
[ 720s] # error neither __elf32 nor __elf64 is defined
[ 720s] ^
[ 720s] elfhacks.c:34:37: error: unknown type name 'ElfW_Sword'
[ 720s] int eh_find_next_dyn(eh_obj_t _obj, ElfW_Sword tag, int i, ElfW(Dyn) *_next);
[ 720s] ^
[ 720s] elfhacks.c:422:37: error: unknown type name 'ElfW_Sword'
[ 720s] int eh_find_next_dyn(eh_obj_t _obj, ElfW_Sword tag, int i, ElfW(Dyn) *_next)
[ 720s] ^
[ 720s] make[2]: *** [libssr_glinject_la-elfhacks.lo] Error 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.