-
-
Notifications
You must be signed in to change notification settings - Fork 110
Description
Bug report checklist
- Always send the vokoscreenNG log, after a "Start" and "Stop" (I will attach it below)
- Have you searched the existing issues to see if this report is a duplicate?
- Are you using the latest version of vokoscreenNG?
- Are you familiar with https://www.mediawiki.org/wiki/How_to_report_a_bug ?
Describe the bug
On Wayland under niri, starting a portal-based screencast fails immediately.
vokoscreenNG cannot set the GStreamer pipeline to PLAYING and reports GST_STATE_CHANGE_FAILURE.
PipeWire / GStreamer logs show negotiation failing with:
pipewiresrc ... stream error: no more input formatsstreaming stopped, reason not-negotiated (-4)- PipeWire link negotiation:
negotiating -> error (no more input formats)
On X11 with the same audio-track selection, recording works as expected.
Environment
From vokoscreenNG log header:
- vokoscreenNG: 4.7.4
- Desktop: niri (Wayland session)
- OS: EndeavourOS (Arch-based), x86_64, CPU threads: 16
- Qt: 6.10.1
- GStreamer: 1.26.10
- PulseAudio library: 17.0.0 (pipewire-pulse)
- PipeWire: 1.4.9
Portal packages:
pacman -Qs xdg-desktop-portal
local/xdg-desktop-portal 1.20.3-2
local/xdg-desktop-portal-gnome 49.0-1 (gnome)
local/xdg-desktop-portal-gtk 1.15.3-1Portal services (confirm no wlr backend is active):
systemctl --user status xdg-desktop-portal xdg-desktop-portal-gnome xdg-desktop-portal-wlr --no-pager
# xdg-desktop-portal: active (running)
# xdg-desktop-portal-gnome: active (running)
# Unit xdg-desktop-portal-wlr.service could not be found.Log messages
1) vokoscreenNG log
22:40:53 [vokoscreenNG] Desktop session is a Wayland session
22:40:53 [vokoscreenNG] Version: 4.7.4
22:40:53 [vokoscreenNG] Locale: zh_CN
22:40:53 [vokoscreenNG] Log from: 2025-12-29 22:40:53
22:40:53 [vokoscreenNG] Country: China
22:40:53 [vokoscreenNG] Qt: 6.10.1
22:40:53 [vokoscreenNG] GStreamer 1.26.10
22:40:53 [vokoscreenNG] PulseAudio library version: 17.0.0
22:40:53 [vokoscreenNG] Pipewire version: 1.4.9
22:40:53 [vokoscreenNG] Operating system: EndeavourOS
22:40:53 [vokoscreenNG] CPU Architecture: x86_64
22:40:53 [vokoscreenNG] Count CPU: 16
22:40:53 [vokoscreenNG] vokoscreenNG running as: wayland client
22:40:53 [vokoscreenNG] vokoscreenNG running on: wayland
22:40:53 [vokoscreenNG] Desktop: niri
22:40:53 [vokoscreenNG] Systray: Supported
22:40:53 [vokoscreenNG] Icon-Theme: Qogir-Dark
22:40:53 [vokoscreenNG] Styles: QList(kvantum-dark, kvantum, qt5ct-style, qt6ct-style, Windows, Fusion)
22:40:53 [vokoscreenNG] Qt-PluginsPath: /usr/lib/qt6/plugins
22:40:53 [vokoscreenNG] Qt-TranslationsPath: /usr/share/qt6/translations
22:40:53 [vokoscreenNG] Qt-LibraryPath: /usr/lib
22:40:53 [vokoscreenNG] SettingsPath: /home/fengyu/.config/vokoscreenNG/vokoscreenNG.ini
22:40:53 [vokoscreenNG] LogPath: /home/fengyu/.config/vokoscreenNG/log/2025-12-29_22-40-51.log
22:40:53 [vokoscreenNG] Default Videopath: /home/fengyu/视频
22:40:53 [vokoscreenNG] --- Screencast: GStreamer elements ---
22:40:53 [vokoscreenNG] + pipewiresrc
22:40:53 [vokoscreenNG] + videoconvert
22:40:53 [vokoscreenNG] + videorate
22:40:53 [vokoscreenNG] + queue
22:40:53 [vokoscreenNG] + h264parse
22:40:53 [vokoscreenNG] + pulsesrc
22:40:53 [vokoscreenNG] + audioconvert
22:40:53 [vokoscreenNG] + audiorate
22:40:53 [vokoscreenNG] + audioresample
22:40:53 [vokoscreenNG] + audiomixer
22:40:53 [vokoscreenNG] + filesink
22:40:53 [vokoscreenNG] + videocrop
22:40:53 [vokoscreenNG] --- Convert to GIF: GStreamer elements ---
22:40:53 [vokoscreenNG] + filesrc
22:40:53 [vokoscreenNG] + matroskademux
22:40:53 [vokoscreenNG] + h264parse
22:40:53 [vokoscreenNG] + openh264dec
22:40:53 [vokoscreenNG] + queue
22:40:53 [vokoscreenNG] + videoconvert
22:40:53 [vokoscreenNG] - gifenc
22:40:53 [vokoscreenNG] + filesink
22:40:53 [vokoscreenNG] --- Convert to MP4: GStreamer elements ---
22:40:53 [vokoscreenNG] + filesrc
22:40:53 [vokoscreenNG] + matroskademux
22:40:53 [vokoscreenNG] + h264parse
22:40:53 [vokoscreenNG] + queue
22:40:53 [vokoscreenNG] + mp4mux
22:40:53 [vokoscreenNG] + filesink
22:40:53 [vokoscreenNG] + mpegaudioparse
22:40:53 [vokoscreenNG] + opusparse
22:40:53 [vokoscreenNG] --- Convert to WEBM: GStreamer elements ---
22:40:53 [vokoscreenNG] + filesrc
22:40:53 [vokoscreenNG] + matroskademux
22:40:53 [vokoscreenNG] + h264parse
22:40:53 [vokoscreenNG] + openh264dec
22:40:53 [vokoscreenNG] + queue
22:40:53 [vokoscreenNG] + videoconvert
22:40:53 [vokoscreenNG] + vp8enc
22:40:53 [vokoscreenNG] + webmmux
22:40:53 [vokoscreenNG] + filesink
22:40:53 [vokoscreenNG] + uridecodebin
22:40:53 [vokoscreenNG] + audioconvert
22:40:53 [vokoscreenNG] + audiorate
22:40:53 [vokoscreenNG] + vorbisenc
22:40:53 [vokoscreenNG] Formats, video- and audio codec are only for record, not for the player
22:40:53 [vokoscreenNG] Video formats:
22:40:53 [vokoscreenNG] + matroskamux (mkv)
22:40:53 [vokoscreenNG] Video encoder:
22:40:53 [vokoscreenNG] + openh264enc
22:40:53 [vokoscreenNG] Audio encoder:
22:40:53 [vokoscreenNG] + opusenc
22:40:53 [vokoscreenNG] + lamemp3enc
22:40:53 [vokoscreenNG] [Audio] Found: Noise Canceling source Device: rnnoise_source
22:40:53 [vokoscreenNG] [Audio] Found: Monitor of Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] Digital Stereo (HDMI 6) Device: alsa_output.pci-0000_08_00.1.hdmi-stereo-extra5.monitor
22:40:53 [vokoscreenNG] [Audio] Found: Monitor of Starship/Matisse HD Audio Controller 模拟立体声 Device: alsa_output.pci-0000_0a_00.4.analog-stereo.monitor
22:40:53 [vokoscreenNG] [Audio] Found: Starship/Matisse HD Audio Controller 模拟立体声 Device: alsa_input.pci-0000_0a_00.4.analog-stereo
22:40:53 [vokoscreenNG] This screen is the primary screen: HDMI-A-1
22:40:53 [vokoscreenNG] DevicePixelRatio: 1.25 (Normal displays is 1, Retina display is 2)
22:40:53 [vokoscreenNG] myDevicePixelRatio: 1.25
22:40:53 [vokoscreenNG] Screen Resolution width : 2048
22:40:53 [vokoscreenNG] Screen Resolution height : 1152
22:40:53 [vokoscreenNG] Vertical refresh rate of the screen in Hz: 74.968
22:40:53 [vokoscreenNG] Screen orientation QFlags<Qt::ScreenOrientation>(LandscapeOrientation)
22:40:53 [vokoscreenNG] Color depth of the screen: 32
22:40:53 [vokoscreenNG] Model from screen: PHL 245E1
22:40:53 [vokoscreenNG] Manufactur from screen: Philips Consumer Electronics Company
22:40:53 [vokoscreenNG] SerialNumber from screen:
22:41:10 [vokoscreenNG] Start portal fullscreen
22:41:10 [vokoscreenNG] Mouse cursor is recording
22:41:10 [vokoscreenNG] request path /org/freedesktop/portal/desktop/request/1_337/
22:41:10 [vokoscreenNG] [QvkMainWindow_wl] slot_pre_portal_start()
22:42:58 [vokoscreenNG] SecondWaitBeforeRecording: 1
22:42:58 [vokoscreenNG] Free disk space at the beginning of the recording: 319269 MB
22:42:58 [vokoscreenNG] Separated audio tracks: false
22:42:58 [vokoscreenNG] Start record with: pipewiresrc fd=58 path=122 do-timestamp=true ! videoconvert ! videorate ! queue max-size-bytes=1073741824 max-size-time=10000000000 max-size-buffers=1000 ! video/x-raw, framerate=25/1 ! openh264enc qp-min=23 qp-max=23 usage-type=camera complexity=low multi-thread=0 slice-mode=auto ! h264parse ! matroskamux name=mux writing-app=vokoscreenNG_4.7.4 ! filesink location="/home/fengyu/视频/vokoscreenNG-2025-12-29_22-42-58.mkv"
22:42:58 gst-launch-1.0 -e \
pipewiresrc fd=58 path=122 do-timestamp=true \
! videoconvert \
! videorate \
! queue max-size-bytes=1073741824 max-size-time=10000000000 max-size-buffers=1000 \
! video/x-raw, framerate=25/1 \
! openh264enc qp-min=23 qp-max=23 usage-type=camera complexity=low multi-thread=0 slice-mode=auto \
! h264parse \
! matroskamux name=mux writing-app=vokoscreenNG_4.7.4 \
! filesink location="/home/fengyu/视频/vokoscreenNG-2025-12-29_22-42-58.mkv"
22:42:58 [vokoscreenNG] Start was clicked GST_STATE_CHANGE_FAILURE Returncode = 0
22:42:58 [vokoscreenNG] Unable to set the pipeline to the playing state.
22:51:21 [vokoscreenNG] Stop record
22:51:21 [vokoscreenNG] Free disk space at the end of the recording: 319332 MB2) Additional logs (GStreamer / PipeWire) — for diagnosis
These are extra diagnostic logs that show the failure mode.
GStreamer log (filtered):
WARN pipewiresrc ... error: stream error: no more input formats
WARN basesrc ... error: Internal data stream error.
WARN basesrc ... error: streaming stopped, reason not-negotiated (-4)
PipeWire / portal related journal (trimmed):
pw.context: params Spa:Enum:ParamId:EnumFormat: 1:0 invalid param (output format (no more input formats))
pw.link: (SOURCE -> SINK) negotiating -> error (no more input formats) (configure-configure)
pw.core: ... error -32 ...: no more input formats
mod.client-node: ... error seq:... -32 (no more input formats)
To Reproduce
- Login to a Wayland session with niri.
- Start vokoscreenNG.
- Choose portal/fullscreen (screen sharing portal dialog appears).
- Click Start.
- In the portal dialog, select a monitor/window and click Share.
- Recording fails immediately; pipeline cannot enter PLAYING.
Expected behavior
Recording should start successfully and write a valid video file (with or without audio tracks).
Actual behavior
Recording fails right after granting portal capture permission:
- vokoscreenNG reports it cannot set the pipeline to PLAYING (GST_STATE_CHANGE_FAILURE)
- GStreamer:
not-negotiated - PipeWire:
no more input formats
Additional context (PipeWire nodes / format negotiation)
Right after clicking Share, two PipeWire nodes appear:
- Source:
niri(video output stream) - Sink:
vokoscreenNG(video input stream)
Example IDs from one run (IDs change per run):
SOURCE node (Stream/Output/Video): id 122 node.name="niri"
SINK node (Stream/Input/Video): id 94 node.name="vokoscreenNG"
Enumerating formats on the niri source node:
pw-cli enum-params 122 3shows (trimmed):
Video:format ... BGRx
Video:size ... 2560x1440
Video:maxFramerate ... 74968/1000
During a failing run, PipeWire repeatedly enumerates many formats (e.g. I420/NV12/Y444_10BE etc.) and ends with:
... output format (no more input formats)
pw.link: (122 -> 94) negotiating -> error (no more input formats)
This looks like no common format can be negotiated between source and sink, resulting in no more input formats.
If you want, I can provide full output of:
pw-cli info <SOURCE_ID>andpw-cli info <SINK_ID>pw-cli enum-params <SOURCE_ID> 3and<SINK_ID> 3pw-dump(full graph)