Xpra: Ticket #1113: improve webcam support

Follow up from #1030. See wiki/Webcam.

Thu, 04 Feb 2016 19:24:55 GMT - Antoine Martin: status, description changed

We should also add support for native H264: Using the Logitech C920 webcam with Gstreamer

Tue, 14 Jun 2016 17:12:03 GMT - Antoine Martin:


The webcam tool now shows a lot more device information.

Maybe too late for us, but I've just found a python ctypes interface for v4l2: https://pypi.python.org/pypi/v4l2

As for v4l2loopback, packaging it for dkms is too hard (dkms always seem to cause more problems that it solves for me too). Why isn't this merged upstream? Can we help push it? The code is stable and does not change much.

Remaining issues:

This is what the systray now looks like: new systray menu shows my webcam as option

Wed, 15 Jun 2016 16:15:54 GMT - Antoine Martin:

More links on win32 device events API:


As for framerate, without going as far as refactoring the window-source code so we can use it for sending webcam frames, maybe we can send frames based on the line latency. (ie: 200ms round trip -> allow 4 frames in flight for a 20fps target)

Wed, 15 Jun 2016 16:19:52 GMT - Antoine Martin: attachment set

new systray menu shows my webcam as option

Thu, 16 Jun 2016 11:22:02 GMT - Antoine Martin: attachment set

try to get notifications when USB devices are added or removed

Thu, 16 Jun 2016 12:27:30 GMT - Antoine Martin:

The patch above attempts to use IOKit.py to get device notifications for OSX, but it has a number of problems:

Similar / related code:

Webcam API links:

Thu, 16 Jun 2016 16:09:24 GMT - Antoine Martin: owner, status changed

r12834 solves the framerate issue over slower links by calculating how many frames-in-flight we should have and try to keep to that number. It adds XPRA_WEBCAM_FPS means we try to send that many frames per second (ie: the default value of 20 will send a frame every 50 milliseconds), unless the ack packets start coming in late. Debug output:

may_send_webcam_frame() latency=307, not acked=6, target=6

Not dealing with shadow servers, because I don't see how this would work.

This will do for this release, will follow up in #1231.

Tue, 12 Jul 2016 16:52:22 GMT - Antoine Martin: milestone changed

Milestone renamed

Fri, 23 Sep 2016 07:12:17 GMT - Antoine Martin:

Mon, 26 Dec 2016 09:22:23 GMT - Antoine Martin: status changed; resolution set

Not heard back, closing.

Mon, 21 Oct 2019 02:37:30 GMT - Antoine Martin: description changed

For win32 and macos see #1231

Sat, 23 Jan 2021 05:15:20 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/1113