Skip to content

WIP: Screen sharing (plugin called remotevideo)

Jiří Wolker requested to merge (removed):remotevideo into master

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:

  1. Server sends kdeconnect.remotevideo.getcapabilities packet.

  2. 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

  3. User at server side selects screen

  4. Server sends kdeconnect.remotevideo.request packet.

    This packet can contain information about video transport method.

  5. User at client side is asked to accept screen sharing. This step is required on some platforms (e.g. Android).

  6. 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.

Edited by Jiří Wolker

Merge request reports