WIP: Screen sharing (plugin called remotevideo)
I am working on screen sharing plugin for KDE Connect. I am going to implement screen sharing in direction Android→KDE. I'll then (maybe) create ffmpeg-based (using x11grab
) implementation to share X11 desktop.
See also Bug 391624 - Add support for screen sharing and issue #23.
-
Sharing Android screen -
Sharing X11 screen -
Sharing Wayland screen -
Sharing Linux framebuffer -
Sharing Windows screen -
VNC
Connection
This plugin uses kdeconnect.remotevideo.*
packets. The side producing video is called client. The other side (the side showing video) is called server.
Connecting:
-
Server sends
kdeconnect.remotevideo.getcapabilities
packet. -
Client sends
kdeconnect.remotevideo.capabilities
packet.This packet contains list of client's screens and some metadata:
-
Resolution
-
Type of screen (physical or virtual)
-
Transport method/video format
-
-
User at server side selects screen
-
Server sends
kdeconnect.remotevideo.request
packet.This packet can contain information about video transport method.
-
User at client side is asked to accept screen sharing. This step is required on some platforms (e.g. Android).
-
Video is streamed using selected transport method.
Transport methods
TCP (TLS-based)
Video is transported using separate encrypted TCP stream on LAN. The server is listening on random port. IP address and port is sent by server in kdeconnect.remotevideo.request
packet.
VNC (just an idea)
This plugin could be used to automatically configure VNC client and server on LAN.
Bluetooth
I am not going to implement Bluetooth transport because I do not know Bluetooth enough.
Android support
Screen types
It should be possible to create virtual screen or capture physical screen.
DRM content
Android does not allow sharing DRM-protected content unless KDE Connect is system application.
Touch and keyboard input
This is possible only on rooted Android devices or using ADB.