Open lonkelle opened 10 months ago
I noticed a similar behaviour of failing silently and not recording anything on SteamOS 3.4.11
(I don't know if it is relevant). In my case, I've found a combination of missing libraries with "undefined symbols".
For example this is what I see in the log, decky-recorder-std-err.log
(for the future reader, since not documented by decky-loader, it's located at /home/deck/homebrew/logs/decky-recorder
):
(gst-plugin-scanner:13355): GStreamer-WARNING **: 22:08:45.503: Failed to load plugin '/home/deck/homebrew/plugins/decky-recorder/bin/gstreamer-1.0/libgstfaac.so': libfaac.so.0: cannot open shared object file: No such file or directory
(gst-plugin-scanner:13355): GStreamer-WARNING **: 22:08:45.526: Failed to load plugin '/home/deck/homebrew/plugins/decky-recorder/bin/gstreamer-1.0/libgstudp.so': /home/deck/homebrew/plugins/decky-recorder/bin/gstreamer-1.0/libgstudp.so: undefined symbol: g_string_free_and_steal
(gst-plugin-scanner:13355): GStreamer-WARNING **: 22:08:45.531: Failed to load plugin '/home/deck/homebrew/plugins/decky-recorder/bin/gstreamer-1.0/libgstdtls.so': libcrypto.so.3: cannot open shared object file: No such file or directory
(gst-plugin-scanner:13355): GStreamer-WARNING **: 22:08:45.534: Failed to load plugin '/home/deck/homebrew/plugins/decky-recorder/bin/gstreamer-1.0/libgstvideofilter.so': /home/deck/homebrew/plugins/decky-recorder/bin/gstreamer-1.0/libgstvideofilter.so: undefined symbol: gst_navigation_event_set_coordinates
.... a bunch more warnings
WARNING: erroneous pipeline: no element "pipewiresrc"
Here's the full output: https://pastebin.com/i505T6yC
I think that the warnings are probably harmless and the main issue is with pipewiresrc
(plugin?).
I tried the stable version, the testing version and also building the plugin myself.
This also is probably the same bug as in #20.
You were right @lonkelle. I checked the comment from @siglmf and, thanks to that, I could verify that the cause of the issue is the recorder using gst-launch-1.0
(included in gstreamer
package) from SteamOS
and the gst-plugins (plugins for gstreamer
) from Archlinux Repository. The latter are always newer, because SteamOS doesn’t update that frequently.
The solution is to target specific versions of gstreamer
plugin instead of downloading the latest available in Arch. I tested it for SteamOS 3.4.10
in here and it works as expected.
The recorder probably works on SteamOS 3.5
because Arch still ships the same major version, 1.22.x
, but that could change at any moment. Here's what I found about the versions:
System / Repo | GStreamer Version |
---|---|
SteamOS 3.4.10 | 1.20.4-1 |
SteamOS 3.5.7 | 1.22.3-6 |
Archlinux (2024-01-16) | 1.22.8-2 |
One would need to tie together the plugin version with the backend libraries included on it. It would help also if Decky-Loader would have a mechanism to only install plugin versions compatible with the OS, or at least let you install an older version from UI (I think it is possible manually providing the URL).
I'll continue experimenting to see if I can find a solution that would work with both major versions of SteamOS.
This occurs every time a user updates Decky Recorder and the GStreamer version library is changed or every time a user updates SteamOS and the GStreamer version library is changed.
Maybe dynamically loading this library will fix the issue?
@siglmf - "SteamOS includes GStreamer and Decky Recorder includes some additional libraries for that, and if there is a version mismatch between those, then recording will fail silently. Decky Recorder just starts the gst-launch-1.0 process (which fails immediately), and then it never checks the status of that process (until after you stop the recording), so it does not notice or report any issue."
Reference: https://github.com/marissa999/decky-recorder/issues/52