Skip to content

Instantly share code, notes, and snippets.

@edrex
Last active Jun 7, 2022
Embed
What would you like to do?
Streaming screen capture under Wayland

Recipes

kmsgrab capture with ffmpeg

sudo LIBVA_DRIVER_NAME=iHD ffmpeg -crtc_id 69  -framerate 60 -f kmsgrab -i - -vaapi_device /dev/dri/renderD128 -filter:v hwmap,scale_vaapi=w=1920:h=1200:format=nv12 -c:v h264_vaapi -profile:v constrained_baseline -level:v 3.1 -b:v 20000k test.mp4

LIBVA_DRIVER_NAME=iHD ffmpeg -device /dev/dri/card0 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi -vstats output.mp4

Allow kmsgrab capture as non-root user

Unsafe but needed

sudo setcap cap_sys_admin+ep $(which ffmpeg)

Src: https://ffmpeg.org/pipermail/ffmpeg-user/2018-June/040338.html

Wishlist

kms capture to OBS (is there a plugin somewhere?)

Resources

OBS

@edrex
Copy link
Author

edrex commented Feb 11, 2019

just saw your comment @colemickens

Yeah, I'm aware of wlr-export-dmabuf-unstable-v1 (https://obsproject.com/mantis/view.php?id=719#c3754). I was just wanting to get something working for actual streaming to an RTMP server.

I wonder: could ffmpeg be manually pointed to the right surface for capturing without root via the protocol, as wlstream does, or will it need patching?

@edrex
Copy link
Author

edrex commented Feb 11, 2019

I was never able to get dmabuf-capture working, so i guess that's step 0.

@MonAaraj
Copy link

MonAaraj commented Jan 2, 2022

@edrex
Copy link
Author

edrex commented Jan 2, 2022

@MonAaraj the difference is wf-recorder receives the video frames via the wlr-screencopy wayland protocol, while this uses dmabufs to avoid copying, see ammen99/wf-recorder#45

https://hg.sr.ht/~scoopta/wlrobs supports wlr-export-dmabuf for zero-copy capture.

@MonAaraj
Copy link

MonAaraj commented Jan 2, 2022

Ah, I see! Thank you very much! The reason I commented that was because I was looking for screen recorders other than OBS for Wayland and I found it difficult - I only found wf-recorder and it got the job done, so I thought I might put it here for people who get it from Google like me. Nevertheless, wlrobs seems interesting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment