Webcam

August 8, 2026 ยท View on GitHub

For usage related information, see webcam feature.

The prefix for all packets and capabilities is webcam.

ComponentLink
clientxpra.client.subsystem.webcam
client connectionxpra.server.source.webcam
serverxpra.server.subsystem.webcam

The client exposes a single webcam boolean capability.
The server exposes the following attributes using the webcam capability prefix:

  • enabled boolean
  • encodings list of strings - encodings supported: only png or jpeg are guaranteed to be supported
  • devices integer - the number of virtual video devices available
Packet TypeArgumentsDirection
webcam-startdevice_id, width, heightclient to server
webcam-ackunused, frame_no, width, heightserver to client
webcam-framedevice_id, frame_no, encoding, width, height, dataclient to server
webcam-stopdevice_no

device_id, frame_no, width and height are always integers, encoding is a string.

The device_id must be smaller than the number of virtual video devices.

Flow

  • client requests webcam-start
  • the server responds with a webcam-ack for frame_no 0, the width and height may be different from the one requested
  • the client can then send a webcam-frame for frame_no 1
  • the server responds with a webcam-ack for each frame it receives
  • the client must wait for the webcam-ack before sending the next frame
  • whenever the client decides to stop forwarding the webcam, it must send a webcam-stop packet

If any of these steps fail, a webcam-stop packet must be sent to the peer.