MaartenBaert / ssr

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

Simple Screen Recorder doesn't work on the latest release of openSUSE Tumbleweed #992

Open mastionolsatu opened 1 year ago

mastionolsatu commented 1 year ago

I am an openSUSE user and use Simple Screen Recorder for my educational video creation. Unfortunately now Simple Screen Recorder doesn't work on the latest release of openSUSE Tumbleweed. And unfortunately also when I want to go back to the old release it always fails to install so the choice is to keep using the latest release or I change to another distro. But I already like openSUSE so waiting for a fix for this problem is my choice.

My thanks to the developer and I'm waiting for good news from you.

junetried commented 1 year ago

What isn't working? It works here on my Tumbleweed install, I haven't had any issues. I've been using it fairly regularly for over a year.

davechuang84 commented 1 year ago

Not sure if OP has same issue, but i face same issue where Simple Screen Recorder does not load. I get the following error about suitable container after i run the app.

SimpleScreenRecorder 0.4.4
Compiled with GCC 12.2.1
Qt: header 5.15.7, lib 5.15.8
libavformat: header 59.27.100, lib 59.27.100
libavcodec: header 59.37.100, lib 59.37.100
libavutil: header 57.28.100, lib 57.28.100
libswscale: header 6.7.100, lib 6.7.100
[CPUFeatures::Detect] CPU features: mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 avx avx2 bmi1 bmi2
[ALSAInput::GetSourceList] Generating source list ...
[ALSAInput::GetSourceList] Found plugin: [pipewire] PipeWire Sound Server
[ALSAInput::GetSourceList] Found card: [hw:0] HDA Intel PCH
[ALSAInput::GetSourceList] Found device: [hw:0,0] HDA Intel PCH: ALC257 Analog
[PulseAudioInput::GetSourceList] Generating source list ...
[SourceNamesCallback] Found source: [alsa_output.pci-0000_00_1f.3.analog-stereo.monitor] Monitor of Built-in Audio Analog Stereo
[SourceNamesCallback] Found source: [alsa_input.pci-0000_00_1f.3.analog-stereo] Built-in Audio Analog Stereo
[PageOutput::PageOutput] Error: Could not find any suitable container in libavformat!
Aborted (core dumped)
LinAGKar commented 1 year ago

For me, ssr-glinject just segfaults on Tumbleweed:

> ssr-glinject echo                                
ssr-glinject: LD_PRELOAD = :libssr-glinject.so
ssr-glinject: command = echo
[1]    797 segmentation fault (core dumped)  ssr-glinject echo
MaartenBaert commented 1 year ago

Error: Could not find any suitable container in libavformat!

Do you have a functional version of ffmpeg installed?

For me, ssr-glinject just segfaults on Tumbleweed:

ssr-glinject also started failing on Arch Linux at some point due to changes to the way the loader works, this may be the same thing. I have a partial fix but it hasn't been released yet because it's still somewhat broken. Does SSR itself work?

LinAGKar commented 1 year ago

Does SSR itself work?

Yes, I can record the full screen just fine

petterreinholdtsen commented 9 months ago

I've been told that the latest git edition avoid the segfault and suspect it might be due to https://github.com/MaartenBaert/ssr/commit/83b8f9f5d9c9ab06152657e57f85b6f71954a6b9 . Perhaps give it a try?

g3grau commented 8 months ago

I just stumbled into the Tumbleweed update issue as well. I think it was still working in Jan 2024, so I don't know exactly why others had this issue earlier. I have a suspicion about the _SUSE suffixes in the version names (but I am clueless).

Running the previously installed version, I get these errors:

simplescreenrecorder: /usr/local/lib/libavutil.so.58: version `LIBAVUTIL_58.2_SUSE' not found (required by simplescreenrecorder)
simplescreenrecorder: /usr/local/lib/libavcodec.so.60: version `LIBAVCODEC_60.3_SUSE' not found (required by simplescreenrecorder)
simplescreenrecorder: /usr/local/lib/libavformat.so.60: version `LIBAVFORMAT_60.3_SUSE' not found (required by simplescreenrecorder)
simplescreenrecorder: /usr/local/lib/libswscale.so.7: version `LIBSWSCALE_7.1_SUSE' not found (required by simplescreenrecorder)

and checking for the libs reveals

lrwxrwxrwx 1 root root 22 Jan  5 13:59 /usr/local/lib/libavutil.so.58 -> libavutil.so.58.36.101*
lrwxrwxrwx 1 root root 23 Jan  5 13:59 /usr/local/lib/libavcodec.so.60 -> libavcodec.so.60.37.100*
lrwxrwxrwx 1 root root 24 Jan  5 13:59 /usr/local/lib/libavformat.so.60 -> libavformat.so.60.20.100*
lrwxrwxrwx 1 root root 21 Jan  5 13:59 /usr/local/lib/libswscale.so.7 -> libswscale.so.7.6.100*

I'm clueless what this means and how to debug it. The right library version seems to be available, but the _SUSE suffix may cause trouble? Can someone explain me?

I just tried to compile it from the repo, but that complains about

/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/13/../../../libX11.so when searching for -lX11
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: cannot find -lX11: No such file or directory
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/13/../../../libX11.so when searching for -lX11
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/13/../../../libXfixes.so when searching for -lXfixes
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: cannot find -lXfixes: No such file or directory
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/13/../../../libXfixes.so when searching for -lXfixes
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/13/../../../libOpenGL.so when searching for -lOpenGL
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: cannot find -lOpenGL: No such file or directory
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/13/../../../libOpenGL.so when searching for -lOpenGL
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/13/../../../libGLX.so when searching for -lGLX
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: cannot find -lGLX: No such file or directory
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/13/../../../libGLX.so when searching for -lGLX
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/13/../../../libGLU.so when searching for -lGLU
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: cannot find -lGLU: No such file or directory
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/13/../../../libGLU.so when searching for -lGLU
collect2: error: ld returned 1 exit status
make[2]: *** [glinject/CMakeFiles/ssr-glinject32.dir/build.make:166: glinject/lib32/libssr-glinject.so] Error 1
make[1]: *** [CMakeFiles/Makefile2:163: glinject/CMakeFiles/ssr-glinject32.dir/all] Error 2

I'll try to figure out how to fix that... I want this great tool back!

My libavutil.so.85 is from pacman as yast2 just revealed. Crazy enough, starting yast2 gives another message dlopen: /usr/local/lib/libavcodec.so.60: version `LIBAVCODEC_60.3_SUSE' not found (required by /usr/libexec/libheif/libheif-ffmpegdec.so). I guess something is messed up with the package sources?

petterreinholdtsen commented 6 months ago

I suspect this issue is fixed by 83b8f9f5d9c9ab06152657e57f85b6f71954a6b9, see also https://github.com/MaartenBaert/ssr/issues/947 .

g3grau commented 5 months ago

In my case it seems that the system default LD path is screwed up. I could not really find the real issue yet since /etc/ld.so.conf etc. look ok, but my workaround was a startSSR.sh wrapper script which sets LD_LIBRARY_PATH. This fixes a bunch of other library related messages from other tools. In short, all required libraries including those with the _SUSE suffix were installed, they were just not found...

#!/bin/bash
export LD_LIBRARY_PATH=/usr/lib64:/usr/local/lib64/:/usr/lib:/usr/local/lib
/usr/bin/simplescreenrecorder $@&