Closed jvnknvlgl closed 3 years ago
CC @GeorgesStavracas
I can't reproduce this. Can you run with --verbose
and paste the log?
flatpak run com.obsproject.Studio --verbose > log.txt
Console output:
Failed to create wl_display (No such file or directory)
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
Gtk-Message: 17:40:41.602: Failed to load module "canberra-gtk-module"
Gtk-Message: 17:40:41.602: Failed to load module "pk-gtk-module"
Gtk-Message: 17:40:41.602: Failed to load module "canberra-gtk-module"
Gtk-Message: 17:40:41.602: Failed to load module "pk-gtk-module"
Qt: Session management error: None of the authentication protocols specified are supported
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_clicked()
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_destroyed()
QMetaObject::connectSlotsByName: No matching signal for on_actionGridMode_triggered()
QMetaObject::connectSlotsByName: No matching signal for on_program_customContextMenuRequested(QPoint)
libDeckLinkAPI.so: cannot open shared object file: No such file or directory
error: os_dlopen(libnvidia-encode.so.1->libnvidia-encode.so.1): libnvidia-encode.so.1: cannot open shared object file: No such file or directory
error: os_dlopen(/app//lib/obs-plugins/obs-ndi.so->/app//lib/obs-plugins/obs-ndi.so): /app//lib/obs-plugins/obs-ndi.so: cannot open shared object file: No such file or directory
error: Service '' not found
Log file: log.txt
Failed to create wl_display (No such file or directory)
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
Gtk-Message: 17:48:39.503: Failed to load module "canberra-gtk-module"
Gtk-Message: 17:48:39.503: Failed to load module "pk-gtk-module"
Gtk-Message: 17:48:39.503: Failed to load module "canberra-gtk-module"
Gtk-Message: 17:48:39.503: Failed to load module "pk-gtk-module"
Qt: Session management error: None of the authentication protocols specified are supported
Attempted path: share/obs/obs-studio/locale/en-US.ini
Attempted path: /app/share/obs/obs-studio/locale/en-US.ini
Attempted path: share/obs/obs-studio/locale.ini
Attempted path: /app/share/obs/obs-studio/locale.ini
Attempted path: share/obs/obs-studio/themes/Dark.qss
Attempted path: /app/share/obs/obs-studio/themes/Dark.qss
info: Command Line Arguments: --verbose
info: CPU Name: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
info: CPU Speed: 3499.872MHz
info: Physical Cores: 4, Logical Cores: 8
info: Physical Memory: 31844MB Total, 23010MB Free
info: Kernel Version: Linux 5.6.0-300.fc32.x86_64
info: Distribution: "KDE Flatpak runtime" "5.14"
info: Window System: X11.0 - vendor string: Fedora Project - vendor release: 12008000
info: Portable mode: false
Attempted path: share/obs/obs-studio/themes/Dark/no_sources.svg
Attempted path: /app/share/obs/obs-studio/themes/Dark/no_sources.svg
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_clicked()
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_destroyed()
QMetaObject::connectSlotsByName: No matching signal for on_actionGridMode_triggered()
QMetaObject::connectSlotsByName: No matching signal for on_program_customContextMenuRequested(QPoint)
info: OBS 25.0.3 (linux)
info: ---------------------------------
info: ---------------------------------
info: audio settings reset:
samples per sec: 44100
speakers: 2
info: ---------------------------------
info: Initializing OpenGL...
info: Loading up OpenGL on adapter Intel Mesa Intel(R) HD Graphics 630 (KBL GT2)
info: OpenGL loaded successfully, version 4.6 (Core Profile) Mesa 20.0.1, shading language 4.60
info: ---------------------------------
info: video settings reset:
base resolution: 1920x1080
output resolution: 1280x720
downscale filter: Bicubic
fps: 60/1
format: NV12
YUV mode: 601/Partial
info: NV12 texture support not available
info: Audio monitoring device:
name: Default
id: default
info: ---------------------------------
warning: Failed to load 'en-US' text for module: 'decklink-ouput-ui.so'
libDeckLinkAPI.so: cannot open shared object file: No such file or directory
warning: A DeckLink iterator could not be created. The DeckLink drivers may not be installed
info: No blackmagic support
error: os_dlopen(libnvidia-encode.so.1->libnvidia-encode.so.1): libnvidia-encode.so.1: cannot open shared object file: No such file or directory
info: FFMPEG VAAPI supported
error: os_dlopen(/app//lib/obs-plugins/obs-ndi.so->/app//lib/obs-plugins/obs-ndi.so): /app//lib/obs-plugins/obs-ndi.so: cannot open shared object file: No such file or directory
warning: Module '/app//lib/obs-plugins/obs-ndi.so' not loaded
info: ---------------------------------
info: Loaded Modules:
info: text-freetype2.so
info: rtmp-services.so
info: obs-xdg-portal.so
info: obs-x264.so
info: obs-transitions.so
info: obs-outputs.so
info: obs-libfdk.so
info: obs-filters.so
info: obs-ffmpeg.so
info: linux-v4l2.so
info: linux-pulseaudio.so
info: linux-decklink.so
info: linux-capture.so
info: image-source.so
info: frontend-tools.so
info: decklink-ouput-ui.so
info: ---------------------------------
info: ==== Startup complete ===============================================
error: Service '' not found
info: All scene data cleared
info: ------------------------------------------------
info: pulse-input: Server name: 'pulseaudio 13.99.1-rebootstrapped'
info: pulse-input: Audio format: s16le, 44100 Hz, 2 channels
info: pulse-input: Started recording from 'alsa_output.pci-0000_00_1f.3.analog-stereo.monitor'
info: pulse-input: Server name: 'pulseaudio 13.99.1-rebootstrapped'
info: pulse-input: Audio format: s16le, 44100 Hz, 2 channels
info: pulse-input: Started recording from 'alsa_input.pci-0000_00_1f.3.analog-stereo'
info: OBS XDG initialized (sender name: 1_621)
info: Switched to scene 'Scene'
info: ------------------------------------------------
info: Loaded scenes:
info: - scene 'Scene':
info: - source: 'Desktop Screencast (Wayland / X11)' (obs-xdg-source)
info: ------------------------------------------------
Attempted path: share/obs/obs-studio/images/overflow.png
Attempted path: /app/share/obs/obs-studio/images/overflow.png
info: [OBS XDG] Screencast session created
info: [OBS XDG] Asking for monitor…
info: adding 23 milliseconds of audio buffering, total audio buffering is now 23 milliseconds (source: Desktop Audio)
info: [OBS XDG] Monitor selected, setting up screencast
info: [OBS XDG] Starting monitor screencast…
info: adding 23 milliseconds of audio buffering, total audio buffering is now 46 milliseconds (source: Desktop Audio)
This might be slightly more useful.
To help reproduce, SB might help. Silverblue version :
● ostree://fedora:fedora/32/x86_64/silverblue
Version: 32.20200411.n.0 (2020-04-11T08:28:54Z)
BaseCommit: f91f7f27e54e11c36d2ca3a4b7a939da84167d3f48a3659c3278c33d0d7fab5d
GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
Flatpak version :
ID: com.obsproject.Studio
Ref: app/com.obsproject.Studio/x86_64/stable
Arch: x86_64
Branch: stable
Version: 25.0.4
License: GPL-2.0
Origin: flathub
Collection: org.flathub.Stable
Installation: system
Installed: 45.2 MB
Runtime: org.kde.Platform/x86_64/5.14
Sdk: org.kde.Sdk/x86_64/5.14
Commit: a1b16d92fc5599996cba7cccd1476a0f9a5913adf7009079aa7f74ba72002f1e
Parent: 729901b595c5dd86d8d9e68d84316a530c66be67c679736dd33156175f22ea87
Subject: obs 25.0.4 (99e2644a)
Date: 2020-04-06 06:12:13 +0000
Log : obs.log
I think the problem is GNOME 3.36's screenshare fails and then OBS doesn't know what to do so it just waits and then GNOME steps in and tells you to stop it. Either that or the failure to get certain things at the start causes it to not handle it properly.
I'm guessing in the dark, but I have the same issue. Could this be related to Fedora 32 shipping pipewire 0.3 and not 0.2 anymore? Because I get errors from pipewire when trying to create screencast in OBS.
Same here after upgrade from Fedora 31 to 32 (Workstation, not Silverblue). Output of obs and pipewire logs attached.
I have the same error on Arch, gnome 3.36.2, pipewire 0.3.4. OBS flatpak 25.0.4 freeze when screencasting whereas the pacman package 25.0.8-1 works normally with the obs-xdg-portal plugin 0.1.2-1
It seems like this uses the org.kde.Platform/x86_64/5.14
runtime which has pipewire 0.2.
$ flatpak run org.kde.Platform/x86_64/5.14
[📦 org.kde.Platform ~]$ ldd `which pipewire-cli`
linux-vdso.so.1 (0x00007fff30eb1000)
libpipewire-0.2.so.1 => /usr/lib/x86_64-linux-gnu/libpipewire-0.2.so.1 (0x00007f61bdf08000)
libpthread.so.0 => /usr/lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f61bdee6000)
libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007f61bdd1d000)
libdl.so.2 => /usr/lib/x86_64-linux-gnu/libdl.so.2 (0x00007f61bdd17000)
/lib64/ld-linux-x86-64.so.2 (0x00007f61bdf68000)
But that fedora32 ships with 0.3.2
$ pipewire -v
pipewire
Compiled with libpipewire 0.3.2
Linked with libpipewire 0.3.2
These 2 version seem to have different state machines and the "started" signal is never sent. Compared the output of gstreamer pipewiresrc debugs of the obs and an example python script.
$ GST_DEBUG="pipewiresrc:5" flatpak run com.obsproject.Studio --verbose --unfiltered_log 2>&1 | grep wait_negotiated
0:00:03.209361115 2 0x55a0d98fa120 DEBUG pipewiresrc gstpipewiresrc.c:537:wait_negotiated:<pipewiresrc0> waiting for started signal, state now unconnected
0:00:03.209740483 2 0x55a0d98fa120 DEBUG pipewiresrc gstpipewiresrc.c:537:wait_negotiated:<pipewiresrc0> waiting for started signal, state now connecting
0:00:03.210437380 2 0x55a0d98fa120 DEBUG pipewiresrc gstpipewiresrc.c:537:wait_negotiated:<pipewiresrc0> waiting for started signal, state now configure
0:00:03.210627427 2 0x55a0d98fa120 DEBUG pipewiresrc gstpipewiresrc.c:537:wait_negotiated:<pipewiresrc0> waiting for started signal, state now ready
but a different script
$ GST_DEBUG="pipewiresrc:5" python xdp-remote-deskto.py 2>&1 | grep wait_negotiated
0:00:02.704894866 13980 0x55cb6b140c90 DEBUG pipewiresrc gstpipewiresrc.c:532:wait_negotiated:<pipewiresrc0> waiting for started signal, state now unconnected
0:00:02.706109490 13980 0x55cb6b140c90 DEBUG pipewiresrc gstpipewiresrc.c:532:wait_negotiated:<pipewiresrc0> waiting for started signal, state now connecting
0:00:02.709037790 13980 0x55cb6b140c90 DEBUG pipewiresrc gstpipewiresrc.c:532:wait_negotiated:<pipewiresrc0> waiting for started signal, state now paused
0:00:02.731586576 13980 0x55cb6b140c90 DEBUG pipewiresrc gstpipewiresrc.c:532:wait_negotiated:<pipewiresrc0> waiting for started signal, state now streaming
0:00:02.731592993 13980 0x55cb6b140c90 DEBUG pipewiresrc gstpipewiresrc.c:543:wait_negotiated:<pipewiresrc0> got started signal
So you suggest that the actual issue is in the KDE platform and not OBS? Would it be possible for OBS to use it's own version of Pipewire instead of relying on the version provided by the KDE platform?
Or, @GeorgesStavracas, how does one go about adding your extension to the 'regular' (non-Flatpak) version of OBS?
I'm pondering about how to fix this. The thing is that Pipewire 0.2 was still under very active development, and is slightly incompatible with Pipewire 0.3. Pipewire 0.3 is the pipewire version everyone should be using. but that's just not a reality right now: Ubuntu and Debian don't even package 0.3 yet. Here's a small table of what works and what doesn't work:
Producer | Consumer | Works? |
---|---|---|
0.2 | 0.2 | ✓ |
0.2 | 0.3 | ✗ |
0.3 | 0.2 | ✓ |
0.3 | 0.3 | ✓ |
In this context, the producer is the host system compositor (GNOME Shell, KDE, wlroots-based compositor, etc) and the consumer is OBS Studio. We can't simply ship a more recent Pipewire in the OBS Studio Flatpak since it'd be the only combination that can not work.
Or, @GeorgesStavracas, how does one go about adding your extension to the 'regular' (non-Flatpak) version of OBS?
You can download and install it by yourself, or use distro packages if they're available.
You can download and install it by yourself, or use distro packages if they're available.
I tried this, but it seems that the version on Flathub does some other things differently compared to the version on RPMFusion so the latter does not work at all on Wayland (it just shows a transparent window, and your extension also only records a black screen). Maybe I will find a solution another time.
Anyway: would it be a possibility to ship a version of OBS Studio with Pipewire 0.3 on the Flathub Beta repository?
That's a good idea, @jvnknvlgl. I tentatively created a beta with PipeWire 0.3. It's not published to flathub-beta
yet, it'll probably be published in ~3h from now. Meanwhile, you can try the test build with:
$ flatpak install https://dl.flathub.org/build-repo/18910/com.obsproject.Studio.flatpakref
It seems like it's working here.
I installed it from Flathub Beta, and it works! Thanks a lot for your effort!
Yay :)
Do we consider this issue to be fixed, as it cannot really be fixed in the general release as of right now? Or do we want to wait until Pipewire 0.3 has seen a broader release, e.g. Debian and Ubuntu ship it?
I'd consider keeping it open for people to see the issue and solution until wider adoption of 0.3
I opened pipewire/pipewire/-/issues/240 to raise this issue with the PipeWire project.
I can still reproduce this with OBS installed from the standard flathub repositories, beta repos work - thank you for the work!
I wasn't sure how to use the beta repo, so now that I've found out (from this blog post), I'll summarise for anyone else in the same boat:
flatpak remote-add flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo
flatpak install flathub-beta com.obsproject.Studio
Once that has finished, launching OBS normally should use the beta version.
I guess it could be closed now?
Yep, the normal version works fine for me these days.
When I use Desktop Screencast (Wayland / X11), OBS Studio crashes as soon as I select a monitor to share. I attached a screencast. Running the app using
flatpak run com.obsproject.Studio
I do not get any useful messages, the app just freezes.obs.zip