-
-
Notifications
You must be signed in to change notification settings - Fork 315
Closed
Description
Is there an existing issue for this?
- I have searched the existing issues
Current Behavior
I've tried various flavors of the webtop image, the latest tag, and arch-kde, el-mate and others in between all appear to do the same.
I have 60 FPS and even have 144 FPS if I increase the FPS, I have the encoder set to x264. I tried other encoders and tried to tweak the video settings but while the video is playing, i.e youtube, or really any animation or moving object every second there is a stutter, over and over again, every second.
What can I do to tweak so I get smooth video playback.
Expected Behavior
smooth video playback.
Steps To Reproduce
I'm using this docker compose, pretty much copy and paste from the webtop how-to.
- Launch Chromium, or Chrome, FF any browser and open a animation, video or anything that moves.
- Observe every seccond there is a stutter. A pause if you will then motion resumes, it happens every second, over and over again.
Environment
- OS: PRETTY_NAME="Ubuntu 22.04.4 LTS"
- How docker service was installed:
Using official docker docs.CPU architecture
x86-64
Docker creation
services:
webtop:
image: linuxserver/webtop:ubuntu-xfce
container_name: webtop-ubuntu-selkies
security_opt:
- seccomp:unconfined
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- SUBFOLDER=/
- TITLE=Webtop
volumes:
- webtop_config:/config
# - /var/run/docker.sock:/var/run/docker.sock
ports:
# - 3000:3000
- 3001:3001
devices:
- /dev/dri:/dev/dri
shm_size: "3gb"
deploy:
resources:
limits:
memory: 8GB
restart: unless-stopped
networks:
z_vlan6ipvlan:
ipv4_address: 192.168.6.92
dns:
- 192.168.6.1
networks:
z_vlan6ipvlan:
external: true
volumes:
webtop_config:Container logs
[migrations] started
[migrations] no migrations found
───────────────────────────────────────
██╗ ███████╗██╗ ██████╗
██║ ██╔════╝██║██╔═══██╗
██║ ███████╗██║██║ ██║
██║ ╚════██║██║██║ ██║
███████╗███████║██║╚██████╔╝
╚══════╝╚══════╝╚═╝ ╚═════╝
Brought to you by linuxserver.io
───────────────────────────────────────
To support LSIO projects visit:
https://www.linuxserver.io/donate/
───────────────────────────────────────
GID/UID
───────────────────────────────────────
User UID: 1000
User GID: 1000
───────────────────────────────────────
**** creating video group videop69h with id 109 ****
**** adding /dev/dri/renderD128 to video group videop69h with id 109 ****
**** adding /dev/dri/card0 to video group video with id 44 ****
[custom-init] No custom files found, skipping...
[ls.io-init] done.
_XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created.
screen 0 shmid 0
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning: Could not resolve keysym XF86CameraAccessEnable
> Warning: Could not resolve keysym XF86CameraAccessDisable
> Warning: Could not resolve keysym XF86CameraAccessToggle
> Warning: Could not resolve keysym XF86NextElement
> Warning: Could not resolve keysym XF86PreviousElement
> Warning: Could not resolve keysym XF86AutopilotEngageToggle
> Warning: Could not resolve keysym XF86MarkWaypoint
> Warning: Could not resolve keysym XF86Sos
> Warning: Could not resolve keysym XF86NavChart
> Warning: Could not resolve keysym XF86FishingChart
> Warning: Could not resolve keysym XF86SingleRangeRadar
> Warning: Could not resolve keysym XF86DualRangeRadar
> Warning: Could not resolve keysym XF86RadarOverlay
> Warning: Could not resolve keysym XF86TraditionalSonar
> Warning: Could not resolve keysym XF86ClearvuSonar
> Warning: Could not resolve keysym XF86SidevuSonar
> Warning: Could not resolve keysym XF86NavInfo
Errors from xkbcomp are not fatal to the X server
19
20
INFO:data_websocket:pcmflux library found. Audio capture is available.
INFO:data_websocket:pixelflux library found. Striped encoding modes available.
INFO:root:Expected C js_config_t size (from ctypes): 1354 bytes
INFO:main:Upload directory ensured: /config/Desktop
INFO:main:Starting Selkies (WebSocket Mode) with args: Namespace(encoder='x264enc', framerate=60, video_bitrate=16000, dri_node='', audio_device_name='', h264_crf=25, h264_fullcolor=False, h264_streaming_mode=False, watermark_path='', watermark_location=-1, port=8082, debug=False)
INFO:main:Initial Encoder: x264enc, Framerate: 60, Bitrate: 16000kbps
INFO:main:SelkiesStreamingApp initialized: encoder=x264enc, display=1024x768
INFO:main:All main components initialized. Running server...
INFO:webrtc_input:System DPI detected as ~96. Cursor size cap set to 32x32px.
INFO:webrtc_input:Resetting keyboard modifiers.
INFO:webrtc_input:Starting clipboard monitor
INFO:webrtc_input:Found XFIXES version 4.0
INFO:webrtc_input:starting cursor monitor
INFO:webrtc_input:watching for cursor changes
WARNING:data_websocket:Cannot broadcast cursor data: no clients connected or server not ready.
INFO:data_websocket:Data WebSocket Server listening on port 8082
INFO:data_websocket:Data WebSocket connected from ('127.0.0.1', 39896)
INFO:data_websocket:Broadcasting stream resolution: {"type": "stream_resolution", "width": 1024, "height": 768}
INFO:data_websocket:Sending last known cursor to new client ('127.0.0.1', 39896)
INFO:data_websocket:Attempting to establish PulseAudio connection...
INFO:data_websocket:PulseAudio connection established.
INFO:data_websocket:Applying client settings (initial=True): {'videoBitRate': 8000, 'videoFramerate': 144, 'videoCRF': 5, 'encoder': 'x264enc', 'h264_fullcolor': False, 'h264_streaming_mode': True, 'resizeRemote': True, 'isManualResolutionMode': False, 'manualWidth': 1024, 'manualHeight': 768, 'audioBitRate': 320000, 'videoBufferSize': 0, 'initialClientWidth': 2056, 'initialClientHeight': 1134, 'jpeg_quality': 60, 'paint_over_jpeg_quality': 90, 'use_cpu': False, 'h264_paintover_crf': 50, 'h264_paintover_burst_frames': 5, 'use_paint_over_quality': False, 'scaling_dpi': 96}
INFO:gst_app_resize:on_resize_handler attempting resize for: 2056x1134
INFO:gst_app_resize:App dimensions updated to 2056x1134 before xrandr call.
INFO:gst_app_resize:Mode 2056x1134 not found in xrandr list. Attempting to add for screen 'screen'.
INFO:gst_app_resize:Successfully ran: xrandr --newmode 2056x1134 194.50 2056 2192 2408 2760 1134 1137 1147 1176 -hsync +vsync
INFO:gst_app_resize:Successfully ran: xrandr --addmode screen 2056x1134
INFO:gst_app_resize:Applying xrandr mode '2056x1134' for screen 'screen'.
INFO:gst_app_resize:Successfully applied xrandr mode '2056x1134'.
INFO:gst_app_resize:resize_display('2056x1134') reported success.
INFO:data_websocket:Applying SCALING_DPI from initial settings: 96
INFO:gst_app_resize:XFCE detected. Applying xfconf-query for DPI 96.
INFO:data_websocket:Broadcasting stream resolution: {"type": "stream_resolution", "width": 2056, "height": 1134}
INFO:gst_app_resize:Successfully set XFCE DPI to 96 using xfconf-query.
INFO:data_websocket:Successfully set DPI to 96 from initial settings.
INFO:data_websocket:Attempting to set cursor size to 32 based on initial DPI.
INFO:data_websocket:Successfully set cursor size to 32.
WARNING:data_websocket:Pipeline is inactive for the initial client. Forcing a start.
INFO:data_websocket:Video pipeline for x264enc needs to start (was not active or forced).
INFO:data_websocket:Starting x264enc: 2056x1134 @ 144.0fps, CRF: 5, FullFrame: True
WARNING:data_websocket:Attempting to start backpressure task, but client_settings_received event is not set or None. The task will wait for this event. Ensure it's set when initial client settings are processed.
INFO:data_websocket:Trying to ensure client_settings_received is set for backpressure task start.
INFO:data_websocket:New frame backpressure task started (current encoder: 'x264enc').
INFO:data_websocket:x264enc capture started successfully.
INFO:data_websocket:Initial client settings message processed by ws_handler.
INFO:data_websocket:Initial setup: Audio pipeline not yet active, attempting start.
INFO:data_websocket:Starting pcmflux audio pipeline...
INFO:data_websocket:pcmflux settings: device='', bitrate=320000, channels=2
INFO:data_websocket:Frame-based backpressure logic task started.
INFO:data_websocket:Client settings received, proceeding with backpressure loop.
[pcmflux] Attempting to connect to PulseAudio device: system_default...
INFO:data_websocket:pcmflux audio capture started successfully.
INFO:data_websocket:pcmflux audio chunk broadcasting task started.
X Shared Memory Extension available.
XShm setup complete for 2056x1134.
CPU cores available: 20
[pcmflux] SUCCESS: Connected to PulseAudio.
[pcmflux] SUCCESS: Opus encoder created.
[pcmflux] Capture loop started. Device: system_default, Rate: 48000, Channels: 2, Bitrate: 320 kbps, VBR: On, Silence Gate: Off, PCM Chunk: 3840 bytes
WARNING:webrtc_input:No clipboard content to send
INFO:data_websocket:Received START_VIDEO for encoder: x264enc
INFO:data_websocket:x264enc pipeline is already capturing.
INFO:data_websocket:Received START_AUDIO command from client for server-to-client audio.
INFO:data_websocket:START_AUDIO: pcmflux audio pipeline already active.
INFO:webrtc_input:Initializing 4 persistent gamepad instances...
INFO:root:Packed js_config payload for 'Microsoft X-Box 360 pad' (js0): len=1360 bytes. Name='Microsoft X-Box 360 pad', Vendor=0x045e, Product=0x028e, Version=0x0100, Reported Buttons=11 (Array capacity: 512), Reported Axes=8 (Array capacity: 64)
INFO:selkies_gamepad:Gamepad configured. JS socket: /tmp/selkies_js0.sock, EVDEV socket: /tmp/selkies_event1000.sock. Using fixed config: Microsoft X-Box 360 pad
INFO:webrtc_input:Initialized and started persistent gamepad instance for index 0 (Name: 'Microsoft X-Box 360 pad', JS: /tmp/selkies_js0.sock, EVDEV: /tmp/selkies_event1000.sock).
INFO:root:Packed js_config payload for 'Microsoft X-Box 360 pad' (js1): len=1360 bytes. Name='Microsoft X-Box 360 pad', Vendor=0x045e, Product=0x028e, Version=0x0100, Reported Buttons=11 (Array capacity: 512), Reported Axes=8 (Array capacity: 64)
INFO:selkies_gamepad:Gamepad configured. JS socket: /tmp/selkies_js1.sock, EVDEV socket: /tmp/selkies_event1001.sock. Using fixed config: Microsoft X-Box 360 pad
INFO:webrtc_input:Initialized and started persistent gamepad instance for index 1 (Name: 'Microsoft X-Box 360 pad', JS: /tmp/selkies_js1.sock, EVDEV: /tmp/selkies_event1001.sock).
INFO:root:Packed js_config payload for 'Microsoft X-Box 360 pad' (js2): len=1360 bytes. Name='Microsoft X-Box 360 pad', Vendor=0x045e, Product=0x028e, Version=0x0100, Reported Buttons=11 (Array capacity: 512), Reported Axes=8 (Array capacity: 64)
INFO:selkies_gamepad:Gamepad configured. JS socket: /tmp/selkies_js2.sock, EVDEV socket: /tmp/selkies_event1002.sock. Using fixed config: Microsoft X-Box 360 pad
INFO:webrtc_input:Initialized and started persistent gamepad instance for index 2 (Name: 'Microsoft X-Box 360 pad', JS: /tmp/selkies_js2.sock, EVDEV: /tmp/selkies_event1002.sock).
INFO:root:Packed js_config payload for 'Microsoft X-Box 360 pad' (js3): len=1360 bytes. Name='Microsoft X-Box 360 pad', Vendor=0x045e, Product=0x028e, Version=0x0100, Reported Buttons=11 (Array capacity: 512), Reported Axes=8 (Array capacity: 64)
INFO:selkies_gamepad:Gamepad configured. JS socket: /tmp/selkies_js3.sock, EVDEV socket: /tmp/selkies_event1003.sock. Using fixed config: Microsoft X-Box 360 pad
INFO:webrtc_input:Initialized and started persistent gamepad instance for index 3 (Name: 'Microsoft X-Box 360 pad', JS: /tmp/selkies_js3.sock, EVDEV: /tmp/selkies_event1003.sock).
INFO:selkies_gamepad:Gamepad /tmp/selkies_js0.sock: Event processor started.
INFO:selkies_gamepad:JS interposer server listening on /tmp/selkies_js0.sock
INFO:selkies_gamepad:Gamepad /tmp/selkies_js1.sock: Event processor started.
INFO:selkies_gamepad:JS interposer server listening on /tmp/selkies_js1.sock
INFO:selkies_gamepad:Gamepad /tmp/selkies_js2.sock: Event processor started.
INFO:selkies_gamepad:JS interposer server listening on /tmp/selkies_js2.sock
INFO:selkies_gamepad:Gamepad /tmp/selkies_js3.sock: Event processor started.
INFO:selkies_gamepad:JS interposer server listening on /tmp/selkies_js3.sock
INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1000.sock
INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1001.sock
INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1002.sock
INFO:selkies_gamepad:EVDEV interposer server listening on /tmp/selkies_event1003.sock
dbus-daemon[291]: [system] Activating service name='org.freedesktop.login1' requested by ':1.28' (uid=1000 pid=436 comm="xfce4-panel" label="docker-default (enforce)") (using servicehelper)
dbus-daemon[291]: [system] Activated service 'org.freedesktop.login1' failed: Failed to execute program org.freedesktop.login1: Permission denied
dbus-daemon[291]: [system] Activating service name='org.freedesktop.login1' requested by ':1.29' (uid=1000 pid=306 comm="/usr/bin/xfce4-session" label="docker-default (enforce)") (using servicehelper)
dbus-daemon[291]: [system] Activated service 'org.freedesktop.login1' failed: Failed to execute program org.freedesktop.login1: Permission denied
dbus-daemon[291]: [system] Activating service name='org.freedesktop.PolicyKit1' requested by ':1.30' (uid=1000 pid=306 comm="/usr/bin/xfce4-session" label="docker-default (enforce)") (using servicehelper)
dbus-daemon[291]: [system] Activated service 'org.freedesktop.PolicyKit1' failed: Failed to execute program org.freedesktop.PolicyKit1: Permission denied
dbus-daemon[291]: [system] Activating service name='org.freedesktop.login1' requested by ':1.30' (uid=1000 pid=306 comm="/usr/bin/xfce4-session" label="docker-default (enforce)") (using servicehelper)
dbus-daemon[291]: [system] Activated service 'org.freedesktop.login1' failed: Failed to execute program org.freedesktop.login1: Permission denied
dbus-daemon[291]: [system] Activating service name='org.freedesktop.PolicyKit1' requested by ':1.30' (uid=1000 pid=306 comm="/usr/bin/xfce4-session" label="docker-default (enforce)") (using servicehelper)
dbus-daemon[291]: [system] Activated service 'org.freedesktop.PolicyKit1' failed: Failed to execute program org.freedesktop.PolicyKit1: Permission denied
dbus-daemon[291]: [system] Activating service name='org.freedesktop.login1' requested by ':1.30' (uid=1000 pid=306 comm="/usr/bin/xfce4-session" label="docker-default (enforce)") (using servicehelper)
dbus-daemon[291]: [system] Activated service 'org.freedesktop.login1' failed: Failed to execute program org.freedesktop.login1: Permission denied
dbus-daemon[291]: [system] Activating service name='org.freedesktop.PolicyKit1' requested by ':1.30' (uid=1000 pid=306 comm="/usr/bin/xfce4-session" label="docker-default (enforce)") (using servicehelper)
dbus-daemon[291]: [system] Activated service 'org.freedesktop.PolicyKit1' failed: Failed to execute program org.freedesktop.PolicyKit1: Permission denied
dbus-daemon[291]: [system] Activating service name='org.freedesktop.login1' requested by ':1.30' (uid=1000 pid=306 comm="/usr/bin/xfce4-session" label="docker-default (enforce)") (using servicehelper)
dbus-daemon[291]: [system] Activated service 'org.freedesktop.login1' failed: Failed to execute program org.freedesktop.login1: Permission denied
dbus-daemon[291]: [system] Activating service name='org.freedesktop.PolicyKit1' requested by ':1.30' (uid=1000 pid=306 comm="/usr/bin/xfce4-session" label="docker-default (enforce)") (using servicehelper)
dbus-daemon[291]: [system] Activated service 'org.freedesktop.PolicyKit1' failed: Failed to execute program org.freedesktop.PolicyKit1: Permission denied
dbus-daemon[291]: [system] Activating service name='org.freedesktop.login1' requested by ':1.30' (uid=1000 pid=306 comm="/usr/bin/xfce4-session" label="docker-default (enforce)") (using servicehelper)
dbus-daemon[291]: [system] Activated service 'org.freedesktop.login1' failed: Failed to execute program org.freedesktop.login1: Permission denied
dbus-daemon[291]: [system] Activating service name='org.freedesktop.PolicyKit1' requested by ':1.30' (uid=1000 pid=306 comm="/usr/bin/xfce4-session" label="docker-default (enforce)") (using servicehelper)
dbus-daemon[291]: [system] Activated service 'org.freedesktop.PolicyKit1' failed: Failed to execute program org.freedesktop.PolicyKit1: Permission denied
Res: 2056x1134 Mode: H264 (CPU) CS_IN:I420 LR FF Stripes: 1 CRF:5 EncFPS: 55.00 EncStripes/s: 55.00
[pcmflux] First non-silent audio chunk detected! Encoding...
[pcmflux] Status | Read: 1, Silent: 0 (0.0%), Encoded: 1, Rate: 0.01 kbps
Res: 2056x1134 Mode: H264 (CPU) CS_IN:I420 LR FF Stripes: 1 CRF:5 EncFPS: 55.00 EncStripes/s: 55.00
Res: 2056x1134 Mode: H264 (CPU) CS_IN:I420 LR FF Stripes: 1 CRF:5 EncFPS: 54.00 EncStripes/s: 54.00
[pcmflux] Status | Read: 19, Silent: 0 (0.0%), Encoded: 19, Rate: 0.23 kbps
Res: 2056x1134 Mode: H264 (CPU) CS_IN:I420 LR FF Stripes: 1 CRF:5 EncFPS: 69.00 EncStripes/s: 69.00
Res: 2056x1134 Mode: H264 (CPU) CS_IN:I420 LR FF Stripes: 1 CRF:5 EncFPS: 84.00 EncStripes/s: 84.00
[pcmflux] Status | Read: 98, Silent: 0 (0.0%), Encoded: 98, Rate: 1.18 kbps
Res: 2056x1134 Mode: H264 (CPU) CS_IN:I420 LR FF Stripes: 1 CRF:5 EncFPS: 73.00 EncStripes/s: 73.00
Res: 2056x1134 Mode: H264 (CPU) CS_IN:I420 LR FF Stripes: 1 CRF:5 EncFPS: 77.00 EncStripes/s: 77.00
[pcmflux] Status | Read: 100, Silent: 0 (0.0%), Encoded: 100, Rate: 1.20 kbps
Res: 2056x1134 Mode: H264 (CPU) CS_IN:I420 LR FF Stripes: 1 CRF:5 EncFPS: 76.00 EncStripes/s: 76.00
Res: 2056x1134 Mode: H264 (CPU) CS_IN:I420 LR FF Stripes: 1 CRF:5 EncFPS: 65.00 EncStripes/s: 65.00
INFO:data_websocket:Received STOP_VIDEO
INFO:data_websocket:Stopping X11 x264-striped capture...
Capture loop stopped. X resources released.
INFO:data_websocket:Frame-based backpressure logic task cancelled.
INFO:data_websocket:Frame-based backpressure logic task finished.
INFO:data_websocket:Backpressure task was stopped. Calling _reset_frame_ids_and_notify.
INFO:data_websocket:Resetting frame IDs.
INFO:data_websocket:Broadcasting PIPELINE_RESETTING to 1 client(s).
[pcmflux] Status | Read: 100, Silent: 0 (0.0%), Encoded: 100, Rate: 1.20 kbps
[pcmflux] Status | Read: 100, Silent: 0 (0.0%), Encoded: 100, Rate: 1.20 kbps
[pcmflux] Status | Read: 100, Silent: 0 (0.0%), Encoded: 100, Rate: 1.20 kbps
[pcmflux] Status | Read: 100, Silent: 0 (0.0%), Encoded: 100, Rate: 1.20 kbps
[pcmflux] Status | Read: 100, Silent: 0 (0.0%), Encoded: 100, Rate: 1.20 kbps
INFO:data_websocket:Received START_VIDEO for encoder: x264enc
INFO:data_websocket:Starting x264enc: 2056x1134 @ 144.0fps, CRF: 5, FullFrame: True
INFO:data_websocket:New frame backpressure task started (current encoder: 'x264enc').
INFO:data_websocket:x264enc capture started successfully.
INFO:data_websocket:Frame-based backpressure logic task started.
INFO:data_websocket:Client settings received, proceeding with backpressure loop.
X Shared Memory Extension available.
XShm setup complete for 2056x1134.
CPU cores available: 20
INFO:webrtc_input:Set clipboard content, length: 11290
INFO:webrtc_input:Sending clipboard content, length: 11290
[pcmflux] Status | Read: 102, Silent: 0 (0.0%), Encoded: 102, Rate: 1.22 kbps
INFO:data_websocket:Received STOP_VIDEO
INFO:data_websocket:Stopping X11 x264-striped capture...
Capture loop stopped. X resources released.
INFO:data_websocket:Frame-based backpressure logic task cancelled.
INFO:data_websocket:Frame-based backpressure logic task finished.
INFO:data_websocket:Backpressure task was stopped. Calling _reset_frame_ids_and_notify.
INFO:data_websocket:Resetting frame IDs.
INFO:data_websocket:Broadcasting PIPELINE_RESETTING to 1 client(s).
[pcmflux] Status | Read: 98, Silent: 0 (0.0%), Encoded: 98, Rate: 1.18 kbps
[pcmflux] Status | Read: 100, Silent: 0 (0.0%), Encoded: 100, Rate: 1.20 kbps
[pcmflux] Status | Read: 100, Silent: 0 (0.0%), Encoded: 100, Rate: 1.20 kbps
[pcmflux] Status | Read: 100, Silent: 0 (0.0%), Encoded: 100, Rate: 1.20 kbps
[pcmflux] Status | Read: 100, Silent: 0 (0.0%), Encoded: 100, Rate: 1.20 kbps
[pcmflux] Status | Read: 101, Silent: 0 (0.0%), Encoded: 101, Rate: 1.21 kbpsMetadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Done