MaartenBaert / ssr

SimpleScreenRecorder, a screen recorder for Linux
http://www.maartenbaert.be/simplescreenrecorder/
GNU General Public License v3.0
2.5k stars 287 forks source link

SSR goes in the foreground, when recording Minecraft #479

Open JakobDev opened 7 years ago

JakobDev commented 7 years ago

When I start SSS, when Minecrsft is in fullscreen mode, SSS minimize Minecraft and goes in the foreground, so I have to maximize Minecraft while recording. I use Oracle JDK 1.8.0_92.

StripedMonkey commented 7 years ago

Are you using glinject? and its SSR not SSS :P

On Thu, Aug 18, 2016 at 7:53 AM, Wilma456 notifications@github.com wrote:

When I start SSS, when Minecrsft is in fullscreen mode, SSS minimize Minecraft and goes in the foreground, so I have to maximize Minecraft while recording. I use Oracle JDK 1.8.0_92.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/MaartenBaert/ssr/issues/479, or mute the thread https://github.com/notifications/unsubscribe-auth/AHo2RIralPMcUnH0OTfNOgymRZfKb6Z8ks5qhEe_gaJpZM4JnaX2 .

JakobDev commented 7 years ago

Whats glinject?

StripedMonkey commented 7 years ago

Using openGL to record the game, for instance to record minecraft you would use "java -jar Minecraft.jar" as the command. If you use this method to record your games it will ensure nothing else but minecraft is recorded

On Fri, Aug 19, 2016 at 8:48 AM, Wilma456 notifications@github.com wrote:

Whats glinject?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/MaartenBaert/ssr/issues/479#issuecomment-241009312, or mute the thread https://github.com/notifications/unsubscribe-auth/AHo2RGxMmIaiscXXUjoAY0BTt7kMjJSmks5qhaYvgaJpZM4JnaX2 .

MaartenBaert commented 7 years ago

I have never seen this happen myself. SSR certainly doesn't minimize Minecraft, it has no ability to do that. Minecraft must be minimizing itself, but I have no idea why. Are you using the hotkey to start the recording? Does changing the hotkey to something else have any effect? Does Minecraft also minimize itself if you press the same hotkey when SSR is not running?

JakobDev commented 7 years ago

Are you tested this with Oracle JDK? I have more information: My OS is Ubuntu 16.04. I use Gnome Flashback (Metacity) as Desktop, but I have the Problem with Unity too. Here are the Output from my Terminal: ==================== SSR gestartet ==================== SimpleScreenRecorder 0.3.6 Compiled with GCC 5.3.1 Qt: header 4.8.7, lib 4.8.7 libavformat: header 56.40.101, lib 56.40.101 libavcodec: header 56.60.100, lib 56.60.100 libavutil: header 54.31.100, lib 54.31.100 libswscale: header 3.1.101, lib 3.1.101 [CPUFeatures::Detect] CPU Merkmale: mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 [ALSAInput::GetSourceList] Generiere Quell-Liste... [ALSAInput::GetSourceList] Karte gefunden: [hw:0] HDA Intel PCH [ALSAInput::GetSourceList] Gerät gefunden: [hw:0,0] HDA Intel PCH: ALC233 Analog [PulseAudioInput::GetSourceList] Generiere Quell-Liste... [SourceNamesCallback] Quelle gefunden: [alsa_output.pci-0000_00_1b.0.analog-stereo.monitor] Monitor of Internes Audio Analog Stereo [SourceNamesCallback] Quelle gefunden: [alsa_input.pci-0000_00_1b.0.analog-stereo] Internes Audio Analog Stereo [PageRecord::StartPage] Start-Seite... [PageRecord::StartPage] Seite gestartet. [SimpleSynth::Init] Warnung: Puffer-Größe 2048 wird nicht unterstützt, es wird 3072 anstatt verwendet. Das ist kein Problem. [SimpleSynth::SynthThread] Synth-Prozess gestartet. [MakeThreadHighPriority] Warnung: konnte die Prozess-Priorität nicht erhöhen. [PageRecord::StartOutput] Ausgabe wird gestoppt... [Muxer::Init] Verwende Format mp4 (MP4 (MPEG-4 Part 14)). [Muxer::AddStream] Verwende Codec libx264 (libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10). [VideoEncoder::PrepareStream] Verwende Pixel-Format nv12 [libx264 @ 0x27a7820] using SAR=1/1 [libx264 @ 0x27a7820] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 [libx264 @ 0x27a7820] profile High, level 3.2 [libx264 @ 0x27a7820] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - 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 lookahead_threads=1 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,40 pb_ratio=1,30 aq=1:1,00 [Muxer::AddStream] Verwende Codec libvorbis (libvorbis). [AudioEncoder::PrepareStream] Verwende Sample-Format f32p [BaseEncoder::EncoderThread] Starte Kodierungs-Prozess. [BaseEncoder::EncoderThread] Starte Kodierungs-Prozess. [PageRecord::StartOutput] Ausgabe gestartet. [Muxer::MuxerThread] Muxer-Prozess gestartet. [Synchronizer::SynchronizerThread] Synchronisierungs-Prozess gestartet. [PageRecord::StartInput] Eingabe wird gestartet... [X11Input::Init] Verwende X11 geteilten Speicher. [X11Input::InputThread] Eingabe-Prozess gestartet. [PageRecord::StartInput] Eingabe gestartet. [PulseAudioInput::InputThread] Eingabe-Prozess gestartet. [FastResampler::Resample] Resample Rate ist 1.0000 (war 0.0000). [PageRecord::StopOutput] Ausgabe wird angehalten... [PageRecord::StopOutput] Ausgabe angehalten. [PageRecord::StopInput] Eingabe wird angehalten... [X11Input::~X11Input] Stoppe Eingabe Prozess... [X11Input::InputThread] Eingabe-Prozess angehalten. [PulseAudioInput::~PulseAudioInput] Stopping input thread ... [PulseAudioInput::InputThread] Eingabe-Prozess angehalten. [PageRecord::StopInput] Eingabe angehalten. [PageRecord::StopPage] Seite wird angehalten... [Synchronizer::~Synchronizer] Stoppe Synchronisierungs-Prozess... [Synchronizer::SynchronizerThread] Synchronisierungs-Prozess angehalten. [Muxer::Finish] Finalisiere Kodierer... [BaseEncoder::EncoderThread] Kodierer wird geleert... [BaseEncoder::EncoderThread] Kodierer wird geleert... [BaseEncoder::EncoderThread] Kodierungs-Prozess angehalten. [BaseEncoder::EncoderThread] Kodierungs-Prozess angehalten. [Muxer::MuxerThread] Muxer-Prozess angehalten. [Muxer::~Muxer] Kodierer werden gestoppt... [Muxer::~Muxer] Warte darauf, dass der Muxer-Prozess angehalten wird... [BaseEncoder::~BaseEncoder] Stoppe Kodierungs-Prozess... [libx264 @ 0x27a7820] frame I:1 Avg QP:18,81 size:163944 [libx264 @ 0x27a7820] frame P:17 Avg QP:17,95 size: 8344 [libx264 @ 0x27a7820] frame B:48 Avg QP:19,15 size: 185 [libx264 @ 0x27a7820] consecutive B-frames: 3,0% 0,0% 0,0% 97,0% [libx264 @ 0x27a7820] mb I I16..4: 38,2% 5,4% 56,4% [libx264 @ 0x27a7820] mb P I16..4: 0,6% 0,0% 0,1% P16..4: 17,7% 0,0% 0,0% 0,0% 0,0% skip:81,6% [libx264 @ 0x27a7820] mb B I16..4: 0,0% 0,0% 0,0% B16..8: 0,7% 0,0% 0,0% direct: 1,3% skip:98,0% L0: 7,7% L1:92,3% BI: 0,0% [libx264 @ 0x27a7820] 8x8 transform intra:5,0% inter:14,4% [libx264 @ 0x27a7820] coded y,uvDC,uvAC intra: 52,1% 56,0% 51,6% inter: 1,8% 3,9% 1,9% [libx264 @ 0x27a7820] i16 v,h,dc,p: 61% 37% 1% 1% [libx264 @ 0x27a7820] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 24% 11% 9% 5% 5% 9% 6% 19% [libx264 @ 0x27a7820] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 29% 7% 6% 6% 6% 7% 4% 8% [libx264 @ 0x27a7820] i8c dc,h,v,p: 50% 26% 18% 6% [libx264 @ 0x27a7820] Weighted P-Frames: Y:0,0% UV:0,0% [libx264 @ 0x27a7820] kb/s:1127,12 [BaseEncoder::~BaseEncoder] Stoppe Kodierungs-Prozess... [PageRecord::StopPage] Seite gestoppt. [SimpleSynth::~SimpleSynth] Stoppe Synth-Prozess... [SimpleSynth::SynthThread] Synth-Prozess angehalten. ==================== SSR angehalten ==================== And here are a picture of my config: ssr

MaartenBaert commented 7 years ago

I see what you mean now. I can reproduce it if I put Minecraft in fullscreen by pressing F11, but that's not what I usually do. Usually I use Super+F, a shortcut which I've set up in my window manager which puts the current application in fullscreen (works with anything, not just Minecraft). When I do this there is no problem.

This seems to be a problem with Minecraft, not with SSR. I get the same results when I press Alt+F2 or any other global hotkey, even when SSR is not running. So I suggest you just do what I do, configure a global hotkey in your window manager and use that instead of F11. This is not something that I can fix from SSR.

Brottweiler commented 7 years ago

Usually I use Super+F, a shortcut which I've set up in my window manager which puts the current application in fullscreen (works with anything, not just Minecraft). When I do this there is no problem.

That sounds probable because it's not "true fullscreen", or whatever that would mean. It's just maximized and no border. Maximizing a window is no problem, it's just bigger, and if you remove border, then it covers entire screen depending on panels you might have and preferences for them... This is my guess why it works.

MaartenBaert commented 7 years ago

It's the other way around. My shortcut asks the window manager to make the game fullscreen, which is the 'right' way to do fullscreen on X11. The application-level equivalent is setting _NET_WM_STATE_FULLSCREEN, which tells the window manager that it should make that window fullscreen. This is what decently written Linux applications (e.g. firefox) do.

Unfortunately there are a lot of poorly written applications and libraries out there that don't know that _NET_WM_STATE_FULLSCREEN exists, and instead try to implement it themselves, usually poorly:

Optional extras:

This is what SDL 1 did. It's what many games still do, and why my global hotkey code in SSR is so ridiculously complex - I'm basically running a low-level keylogger just to make sure the hotkey still works when broken games grab the keyboard.

Apparently Minecraft has followed a somewhat different pattern. Their fullscreen implementation is only partially broken. It works with the 'nvidia' driver but fails with the open-source 'radeon' driver (just gives you a frozen screen). It does overwrite the gamma curves but at least it leaves the resolution alone. It does not mess with secondary monitors. It does not switch to the wrong screen either. It does not break global hotkeys, but somehow it does minimize itself when you press any hotkey (even the volume buttons, apparently).

There is no such thing as 'true fullscreen' (the technical term is 'exclusive mode') on Linux, this is something which exists in DirectX but not in OpenGL. With OpenGL, you can just switch between windowed and fullscreen because there's no real difference, and the window manager will enable page flipping when this is possible. Page flipping is almost equivalent to DirectX exclusive mode without actually being exclusive. There is absolutely no reason why applications should have to implement their own broken fullscreen attempts, it does not gain them any performance and it just breaks the window manager.

JakobDev commented 7 years ago

I think. recording in window is now the best method. Thank you for your efforts!