Game recording on Zorin?

What, if anything, are people using to record gameplay on Zorin? I saw a thread a couple of years old on this topic with a few recommendations that aren't working out. Blue Recorder wants me to click the window to record it seems, and games running full screen in Bottles like to hide when they don't have focus, even on dual monitors. OBS works great, except the actual recording part. Everything is silky smooth in preview/virtual camera, but the files output are stuttery. Not massive, long halts or anything, microstutters that let the video get its point across while irritating the hell out of the viewer. This isn't a hardware issue, or at least isn't an issue with the hardware's raw power: 7950X3D, 64 GB RAM, RTX 4090. Fixing the microstuttering in OBS would be ideal as I'm familiar with it, but I'm entirely open to anything that'll record something running via Proton without too much hassle.

I've tried dramatically increasing the bitrate in OBS with no effect. Log provided below, just in case someone is familiar enough with OBS to make use of it, but this really is just a request for alternatives that might work better. There are other places to ask for OBS help, after all.

22:24:17.117: Using EGL/X11
22:24:17.117: CPU Name: AMD Ryzen 9 7950X3D 16-Core Processor
22:24:17.117: CPU Speed: 4899.994MHz
22:24:17.118: Physical Cores: 16, Logical Cores: 32
22:24:17.118: Physical Memory: 63421MB Total, 33027MB Free
22:24:17.118: Kernel Version: Linux 6.8.0-40-generic
22:24:17.118: Distribution: "Zorin OS" "17"
22:24:17.118: Desktop Environment: zorin:GNOME (zorin)
22:24:17.118: Session Type: x11
22:24:17.118: Window System: X11.0, Vendor: The X.Org Foundation, Version: 1.21.1
22:24:17.119: Qt Version: 6.2.4 (runtime), 6.2.4 (compiled)
22:24:17.119: Portable mode: false
22:24:17.169: OBS 30.2.3 (linux)
22:24:17.169: ---------------------------------
22:24:17.169: ---------------------------------
22:24:17.169: audio settings reset:
22:24:17.169: 	samples per sec: 48000
22:24:17.169: 	speakers:        2
22:24:17.169: 	max buffering:   960 milliseconds
22:24:17.169: 	buffering type:  dynamically increasing
22:24:17.170: ---------------------------------
22:24:17.170: Initializing OpenGL...
22:24:17.308: Loading up OpenGL on adapter NVIDIA Corporation NVIDIA GeForce RTX 4090/PCIe/SSE2
22:24:17.308: OpenGL loaded successfully, version 3.3.0 NVIDIA 555.58.02, shading language 3.30 NVIDIA via Cg compiler
22:24:17.325: ---------------------------------
22:24:17.325: video settings reset:
22:24:17.325: 	base resolution:   3840x2160
22:24:17.325: 	output resolution: 1920x1080
22:24:17.325: 	downscale filter:  Bicubic
22:24:17.325: 	fps:               60/1
22:24:17.325: 	format:            NV12
22:24:17.325: 	YUV mode:          Rec. 709/Partial
22:24:17.325: NV12 texture support enabled
22:24:17.325: P010 texture support not available
22:24:17.326: Audio monitoring device:
22:24:17.326: 	name: Default
22:24:17.326: 	id: default
22:24:17.326: ---------------------------------
22:24:17.335: No AJA devices found, skipping loading AJA UI plugin
22:24:17.335: Failed to initialize module 'aja-output-ui.so'
22:24:17.343: No AJA devices found, skipping loading AJA plugin
22:24:17.343: Failed to initialize module 'aja.so'
22:24:17.350: Failed to load 'en-US' text for module: 'decklink-captions.so'
22:24:17.356: Failed to load 'en-US' text for module: 'decklink-output-ui.so'
22:24:17.362: A DeckLink iterator could not be created.  The DeckLink drivers may not be installed
22:24:17.362: Failed to initialize module 'decklink.so'
22:24:17.524: [pipewire] Available capture sources:
22:24:17.524: [pipewire]     - Monitor source
22:24:17.524: [pipewire]     - Window source
22:24:17.552: [obs-browser]: Version 2.23.6
22:24:17.552: [obs-browser]: CEF Version 103.0.5060.134 (runtime), 103.0.0-5060-shared-textures.2594+g17f8588+chromium-103.0.5060.134 (compiled)
22:24:17.586: NVENC supported
22:24:17.611: VAAPI: API version 1.14
22:24:17.613: FFmpeg VAAPI H264 encoding supported
22:24:17.613: FFmpeg VAAPI AV1 encoding not supported
22:24:17.619: FFmpeg VAAPI HEVC encoding supported
22:24:17.683: [obs-websocket] [obs_module_load] you can haz websockets (Version: 5.5.2 | RPC Version: 1)
22:24:17.684: [obs-websocket] [obs_module_load] Qt version (compile-time): 6.2.4 | Qt version (run-time): 6.2.4
22:24:17.684: [obs-websocket] [obs_module_load] Linked ASIO Version: 101801
22:24:17.692: [obs-websocket] [obs_module_load] Module loaded.
22:24:17.728: os_dlopen(libvlc.so.5->libvlc.so.5): libvlc.so.5: cannot open shared object file: No such file or directory
22:24:17.728: 
22:24:17.728: [vlc-video]: Couldn't find VLC installation, VLC video source disabled
22:24:17.728: ---------------------------------
22:24:17.728:   Loaded Modules:
22:24:17.728:     vlc-video.so
22:24:17.728:     text-freetype2.so
22:24:17.728:     rtmp-services.so
22:24:17.728:     obs-x264.so
22:24:17.728:     obs-websocket.so
22:24:17.728:     obs-vst.so
22:24:17.728:     obs-transitions.so
22:24:17.728:     obs-qsv11.so
22:24:17.728:     obs-outputs.so
22:24:17.728:     obs-libfdk.so
22:24:17.728:     obs-filters.so
22:24:17.728:     obs-ffmpeg.so
22:24:17.728:     obs-browser.so
22:24:17.728:     linux-v4l2.so
22:24:17.728:     linux-pulseaudio.so
22:24:17.728:     linux-pipewire.so
22:24:17.728:     linux-jack.so
22:24:17.728:     linux-capture.so
22:24:17.728:     linux-alsa.so
22:24:17.728:     image-source.so
22:24:17.728:     frontend-tools.so
22:24:17.728:     decklink-output-ui.so
22:24:17.728:     decklink-captions.so
22:24:17.728: ---------------------------------
22:24:17.729: ---------------------------------
22:24:17.729: Available Encoders:
22:24:17.729:   Video Encoders:
22:24:17.729: 	- ffmpeg_aom_av1 (AOM AV1)
22:24:17.729: 	- ffmpeg_nvenc (NVIDIA NVENC H.264 (FFmpeg))
22:24:17.729: 	- ffmpeg_hevc_nvenc (NVIDIA NVENC HEVC (FFmpeg))
22:24:17.729: 	- ffmpeg_vaapi_tex (FFmpeg VAAPI H.264)
22:24:17.729: 	- hevc_ffmpeg_vaapi_tex (FFmpeg VAAPI HEVC)
22:24:17.729: 	- obs_x264 (x264)
22:24:17.729:   Audio Encoders:
22:24:17.729: 	- ffmpeg_aac (FFmpeg AAC)
22:24:17.729: 	- ffmpeg_opus (FFmpeg Opus)
22:24:17.729: 	- ffmpeg_pcm_s16le (FFmpeg PCM (16-bit))
22:24:17.729: 	- ffmpeg_pcm_s24le (FFmpeg PCM (24-bit))
22:24:17.729: 	- ffmpeg_pcm_f32le (FFmpeg PCM (32-bit float))
22:24:17.729: 	- ffmpeg_alac (FFmpeg ALAC (24-bit))
22:24:17.729: 	- ffmpeg_flac (FFmpeg FLAC (16-bit))
22:24:17.729: 	- libfdk_aac (libfdk AAC)
22:24:17.729: ==== Startup complete ===============================================
22:24:17.745: All scene data cleared
22:24:17.745: ------------------------------------------------
22:24:17.747: pulse-input: Server name: 'pulseaudio 15.99.1'
22:24:17.747: pulse-input: Audio format: s16le, 48000 Hz, 2 channels
22:24:17.747: pulse-input: Started recording from 'alsa_output.usb-SteelSeries_Arctis_Nova_Pro_Wireless-00.analog-stereo.monitor'
22:24:17.747: [Loaded global audio device]: 'Desktop Audio'
22:24:17.747: pulse-input: Server name: 'pulseaudio 15.99.1'
22:24:17.747: pulse-input: Audio format: s16le, 48000 Hz, 1 channels
22:24:17.747: pulse-input: Started recording from 'alsa_input.usb-SteelSeries_Arctis_Nova_Pro_Wireless-00.mono-fallback' (default)
22:24:17.747: [Loaded global audio device]: 'Mic/Aux'
22:24:17.747: pulse-input: Server name: 'pulseaudio 15.99.1'
22:24:17.747: pulse-input: Audio format: s16le, 48000 Hz, 2 channels
22:24:17.748: pulse-input: Started recording from 'alsa_output.usb-SteelSeries_Arctis_Nova_Pro_Wireless-00.analog-stereo.monitor'
22:24:17.748: [window-capture: 'Genymotion'] update settings:
22:24:17.748: 	title: unknown
22:24:17.748: 	class: unknown
22:24:17.748: 
22:24:17.749: [window-capture: 'Window Capture (Xcomposite)'] update settings:
22:24:17.749: 	title: Genshin Impact
22:24:17.749: 	class: steam_proton
22:24:17.749: 
22:24:17.755: Switched to scene 'Genshin'
22:24:17.755: ------------------------------------------------
22:24:17.755: Loaded scenes:
22:24:17.755: - scene 'Genshin':
22:24:17.755:     - source: 'Audio Output Capture (PulseAudio)' (pulse_output_capture)
22:24:17.755:     - source: 'Window Capture (Xcomposite)' (xcomposite_input)
22:24:17.755: - scene 'Arknights':
22:24:17.755:     - source: 'Genymotion' (xcomposite_input)
22:24:17.755:     - source: 'Desktop Audio' (pulse_output_capture)
22:24:17.755: ------------------------------------------------
22:24:18.300: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds (source: Audio Output Capture (PulseAudio))
22:24:18.300: 
22:26:23.866: pulse-input: Stopped recording from 'default'
22:26:23.866: pulse-input: Got 16972 packets with 6052572 frames
22:26:23.866: pulse-input: Server name: 'pulseaudio 15.99.1'
22:26:23.866: pulse-input: Audio format: s16le, 48000 Hz, 2 channels
22:26:23.866: pulse-input: Started recording from 'alsa_output.usb-SteelSeries_Arctis_Nova_Pro_Wireless-00.analog-stereo.monitor' (default)

I mostly just use OBS, and typically don't have any stutters. But I'm also using an AMD GPU, that's probably part of it.

Another one I used to use was simple screen recorder. It pretty much did everything I needed to at the time, might be worth looking at.

What settings do you set in obs? Maybe there's something there that could be causing an issue, or maybe someone who runs Nvidia has a better idea for your setup.

Try GPU Recorder and see if that's something for you.

I backed up Zorin and swapped over to Nobara for a test. Not a hint of stutter, but the OBS installed by Nobara included Game Capture as a source option, which the one I was running on Zorin did not. It could be a case of a dreadfully outdated package in Zorin's store. Honestly, if I didn't have stability issues with Nobara (all KINDS in Nobara 39, and in 40 I've had plasma hang on me once already), I'd consider running it on my gaming desktop and calling the issue solved. It's definitely a software issue though, and doesn't lie with the game, Bottles, or Proton; that much this proved. Since I'm not as comfortable with Fedora though, and since it's not stable, I'll have to keep trying things.

@applecheeks37 Mostly defaults, though I cranked up the bitrate to see if that would help. Didn't, and I didn't really expect it to, since bitrate issues are usually artifacting, not stutter.

@Storm I'll give that a try in the coming days. I feel like I looked at it once, months ago, and didn't see an option to target a window, so I passed, but I don't remember for sure.

I don't know how well it would work, but you could try vokoscreen-NG. I only use it for capturing the desktop. The other point to make is that when you are running anything that uses WINE or bottles it will be using allocated Graphics memory separate to your main desktop.

Do you have obs installed as a flatpak or as a native package? Just curious.

Having swapped to Nobara to test, I'm not sure right now, but I SUSPECT flatpak, which is why I noted that it could be a sorely out of date package in Zorin's store. It's going to take me a few hours to back up Nobara and reinstall my Zorin image, but I'll find out for sure.

@swarfendor437 I'll take a look at vokoscreen when I get back to Zorin. Your point about allocated graphics memory is true of course, but since it runs and records great in Nobara on the same machine, unless I'm missing something, memory isn't the issue.

@swarfendor437 Vokoscreen is an "almost," in that it had no audio for unknown reasons, despite my selecting the same audio device the game's outputting to/OBS gets audio on, and it weirdly letterboxed the video, yet the recording was smooth, and honestly a lot better than I'd expected for something not designed for game recording.

@applecheeks37 OBS was installed via Zorin's repository which to my surprise was not out of date. To my greater surprise, uninstalling it and switching to the official flatpak from Flathub fixed it. No more stuttering. I'm not sure why in the world the apt version had bigger problems, but it's certainly true that it did.

For science, I installed the APT from the official PPA, and the stuttering came back. Or at least, I think I installed it from the official PPA. I'm not sure, now that I think about it, which has priority: a newly added PPA or Zorin's repository. So, uh, this test might be invalid.

I'll close this based on the flatpak resolving the problem, but if you can tell me how I might be sure which APT I'm installing, I'll re-run the test out of curiosity/illusion of grandeur that someone else might run into this problem and benefit from more thorough investigation.

2 Likes

I take it when you login you use Wauland, the default compositor? I always turn this off so Zorin only uses xorg. Would have been curious to know your results using apt version of vokoscreen on xorg.

Yeah, it seems like there's something going on with the APT version specifically. I have always used the flatpak version, mainly because on older software bases there can always be something that causes a bit of stutter. Since it requires so many dependencies, that's why I usually default to flatpak. Same with steam. Causes some issues with other things, but keeping all those dependencies separate and specifically for it usually means the performance stays steady and consistent.

1 Like

No, actually. After updating the kernel and Nvidia drivers following the common hassle around that OS update, I got bounced into Wayland, but I discovered that some time ago and switched myself back to Xorg. At the time I was experiencing the stuttering, I was on Xorg.

@applecheeks37 It seems so. I have had issues with Flatpak before that were resolved by switching to APT (my first negative experience with Zorin was that Firefox kept trying to download to /run, which it stopped when I switched to APT), and I've had situations where the flatpak worked just as well for me as the APT, but this is the first occasion I've had where the flatpak worked BETTER for me than the APT. Good to know, and a new thing to bear in mind while troubleshooting.

I still have to use OBS for full screen due to how Bottles behaves, but I've actually doubled back to Vokoscreen for Arknights recordings, since Arknights is an Android game I run in Genymotion, and Vokoscreen does quite well at capturing a window. Thanks for the recommendation.

1 Like

Reviving this old thread for anyone who might search in the future. Provided you're willing to use Steam as a launcher (you do NOT necessarily have to buy from Steam), Steam has added good, if simple recording functionality that works for all games that support its overlay, which is most of them. The recording functionality DOES support Linux (they want it to work on Steam Deck after all), and is NOT limited to games purchased on Steam. You can use the Games > Add a non-Steam Game to My Library menu item to hunt down a game from another source, and it'll record just fine. If it's a Windows game, you will need to manually tell Steam to use a compatibility tool (that is, turn on Proton), but that takes all of four or five clicks.

Tested with Metaphor Re: Fantazio, a Windows game verified on Steam, and Zenless Zone Zero, a Windows game with its own launcher that I'd separately installed through Bottles.

Quality isn't perfect, but I play at 4k, so this was downscaling and changing the bitrate to reduce file size to ~200 MB. I consider it entirely acceptable for my purposes, and could've chosen to keep it at 4k and full bit rate, but didn't really feel like waiting forever on the upload/YouTube re-encoding/copyright checks.

2 Likes