Webcam-Emulation Treiber

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Benutzeravatar
Jonathan
Establishment
Beiträge: 1375
Registriert: 04.08.2004, 20:06

Webcam-Emulation Treiber

Beitrag von Jonathan » 29.04.2020, 12:00

Moin,

in Zeiten allgegenwärtiger Onlinemeetings kam mir die Idee zu einem witzigen Nebenprojekt: Eigene 'Filter' für die Webcam. Zoom z.B. kann ja den Hintergrund austauschen, aber da ginge ja noch viel mehr - etwa sein eigenes Gesicht durch einen virtuellen Avatar zu ersetzen. Oder wenn man es erstmal einfacher haben will, virtueller Schneefall oder witzige Hüte. Oder all diese Snapchat-Effekte.

Ich überlege gerade wie man das prinzipiell umsetzen könnte. Mit Python und OpenCV kann man beispielsweise mit wenigen Zeilen auf eine Webcam zugreifen und das Bild dann beliebig prozessieren. Was ich aber noch nicht gefunden habe (und was ich mit dem Titel meinte), ist eine Komponente für virtuelle Webcams - ich möchte eine API der ich regelmäßig Frames übergebe und die auf der anderen Seite als normale Webcam erscheint, so dass Zoom und Skype und all die anderen Meeting-Tools sie direkt finden und ansteuern können. Ein Gegenstück zu dem OpenCV Webcam grabbing also, quasi ein 'Webcam pasting'.

Ich habe lange danach gesucht, aber nichts gefunden. Das ist besonders ärgerlich, da es für fast alles andere schon tolle fertige Komponenten gibt. So ist beispielsweise Gesichtserkennung in wenigen Zeilen machbar. Und das ist viel zu cool um damit nicht rumzuspielen. Ich will nicht nur einen Star-Wars Hintergrund, ich will auch mein virtuelles Lichtschwert und meine Darth-Vader Maske.

Kennt ihr da irgendwas? Spontan erscheint mir Python für derartiges Prototyping am schnellsten, aber bezüglich Geschwindigkeit und low-level Treiberkrams ist vielleicht eher C++ angebracht. Ich will jetzt nicht unendlich viel Zeit darein investieren, aber es scheint mir, als sollte man da an einem Wochenende etwas zusammenhacken können.
Lieber dumm fragen, als dumm bleiben!

joggel
Establishment
Beiträge: 1450
Registriert: 06.11.2007, 19:06

Re: Webcam-Emulation Treiber

Beitrag von joggel » 29.04.2020, 12:26

Ich meine letztens irgendwo gelesen zu haben, dass irgend jemand für Zoom ein Face-Swap-Plugin (eigenes Gesicht wird zB mit dem von Barack Obama ausgetauscht) geschrieben hat...
CEO of Dirty Codez Production®

Benutzeravatar
Jonathan
Establishment
Beiträge: 1375
Registriert: 04.08.2004, 20:06

Re: Webcam-Emulation Treiber

Beitrag von Jonathan » 29.04.2020, 13:03

Joah, es gibt da unter anderem folgendes Paper mit veröffentlichtem Code:

Website: https://aliaksandrsiarohin.github.io/fi ... l-website/
2-Minute-Papers Video: https://www.youtube.com/watch?v=mUfJOQKdtAk

Für Zoom wird man vermutlich die API finden, nur würde ich es eben gerne nicht Konferenzsystem-abhängig machen. Ich meine all diese Tools haben ja schon in den Einstellungen die Funktionalität, dass alle angeschlossenen Webcams angezeigt und dann eine ausgewählt werden kann, und da würde ich halt gerne rein.
Lieber dumm fragen, als dumm bleiben!

Matthias Gubisch
Establishment
Beiträge: 291
Registriert: 01.03.2009, 20:09

Re: Webcam-Emulation Treiber

Beitrag von Matthias Gubisch » 29.04.2020, 14:07

Ob es was fertiges gibt weis ich nicht
Aber vielleicht hilft dir das hier weiter:

https://docs.microsoft.com/en-us/window ... er-samples
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben

EyDu
Beiträge: 88
Registriert: 24.08.2002, 18:52
Wohnort: Berlin
Kontaktdaten:

Re: Webcam-Emulation Treiber

Beitrag von EyDu » 29.04.2020, 16:19

Keine Ahnung wie offen das ist, aber vielleicht kannst du bei https://snapcamera.snapchat.com/ Plug-Ins andocken. Hängt aber wohl davon ab, auf welcher Ebene du basteln möchtest.

Benutzeravatar
Krishty
Establishment
Beiträge: 7141
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Webcam-Emulation Treiber

Beitrag von Krishty » 29.04.2020, 16:37

Die wichtigste Frage: Windows, Mac oder Linux?

Ich stimme Jonathan völlig zu, dass es sinnlos ist, APIs oder Plugin-Schnittstellen bestimmter Dienste anzusteuern. Das sollte als normale Webcam erkannt werden, dann funktioniert es immer und überall. Man kann nicht für Snapchat, Zoom, DirectShow, WhatsApp, usw. jedes Mal eine Extrawurst braten.

Ich kann leider nicht damit helfen, wie man den Treiber hinkriegt, aber: Bitte bedenk, dass du bei dir (und jedem anderen Windows-User) die Treibersignierung abschalten musst, wenn du kein Zertifikat hast, um deinen Treiber zu signieren. Das soll ein ziemlich schmerzvoller Prozess sein.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

NytroX
Establishment
Beiträge: 189
Registriert: 03.10.2003, 12:47

Re: Webcam-Emulation Treiber

Beitrag von NytroX » 29.04.2020, 17:28

Ich habe das hier gefunden, vielleicht hilft das:
https://github.com/robot9706/VirtualCameraDriver

Ein virtueller Treiber, den man dann aus dem UserMode ansprechen kann um ihm Frames zu schicken.

Benutzeravatar
Chromanoid
Moderator
Beiträge: 3890
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Webcam-Emulation Treiber

Beitrag von Chromanoid » 29.04.2020, 23:24

Das hier sieht ganz spannend aus: https://github.com/webcamoid/webcamoid

Alexander Kornrumpf
Moderator
Beiträge: 1715
Registriert: 25.02.2009, 14:37

Re: Webcam-Emulation Treiber

Beitrag von Alexander Kornrumpf » 30.04.2020, 09:51

Passt höchstens 50% zum Thema aber ich musste es loswerden, weil mich schon lange kein Stück Technik mehr so geflasht hat: https://krisp.ai/

Benutzeravatar
Jonathan
Establishment
Beiträge: 1375
Registriert: 04.08.2004, 20:06

Re: Webcam-Emulation Treiber

Beitrag von Jonathan » 11.05.2020, 11:55

Hi, danke schonmal für die Antworten.
Krishty hat geschrieben:
29.04.2020, 16:37
Die wichtigste Frage: Windows, Mac oder Linux?
Stimmt natürlich. Ich würde sagen bevorzugterweise Windows, aber wenn es unter Linux 10 mal einfacher wäre, könnte man das auch in Betracht ziehen.

Hier noch ein paar zusätzliche Ressourcen:

https://www.memix.app/
Das hat schon fertige Webcam-Filter. Einer davon verwendet aber wohl einen GLSL-Fragment-Shader der zugreifbar als Textdatei auf der Platte liegt und den man beliebig hacken kann. Es ist nicht dafür gedacht, aber ein paar einfache Sachen gehen damit wohl sehr leicht.

https://obsproject.com/forum/threads/cu ... er.112173/
OBS hat wohl eine Schnittstelle für Plugins. Das könnte auch recht bequem zu benutzen sein.

https://github.com/wildbillcat/KinectCam
Vielleicht nicht der beste Tipp, aber das Ding kann wohl die Kinect-Kamera als Webcam freigeben. Daraus sollte sich also auch etwas hacken lassen.

Wirklich weiter gekommen bin ich noch nicht, aber jetzt hat man zumindest mal ein paar Angriffspunkte.
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
Jonathan
Establishment
Beiträge: 1375
Registriert: 04.08.2004, 20:06

Re: Webcam-Emulation Treiber

Beitrag von Jonathan » 11.05.2020, 20:39

Via Golem.de drauf gestoßen:

https://github.com/alievk/avatarify
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
Chromanoid
Moderator
Beiträge: 3890
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Webcam-Emulation Treiber

Beitrag von Chromanoid » 12.05.2020, 00:05

Interessant, avatarify scheint selbst OBS zu nutzen. Folgt man der Spur kommt man dann hier an: https://github.com/CatxFish/obs-virtual-cam Das wiederum nutzt wohl einen virtuellen DirectShow-Device. Was wiederum bedeutet, dass die meisten Apps (Skype, Zoom ...) DirectShow benutzen (macht ja auch Sinn)...

OBS ist ein ziemlich cooles Projekt, danke für die Links. Obwohl ich das eigentlich nicht brauche ^^

KayZ
Beiträge: 47
Registriert: 06.01.2015, 00:46
Echter Name: Dennis

Re: Webcam-Emulation Treiber

Beitrag von KayZ » 14.05.2020, 11:03

Letztens das hier gesehen, nutzt TensorFlow.js

https://github.com/yemount/pose-animator/

(hilft aber nicht bei der Suche nach einer virtuellen Webcam)

Benutzeravatar
Jonathan
Establishment
Beiträge: 1375
Registriert: 04.08.2004, 20:06

Re: Webcam-Emulation Treiber

Beitrag von Jonathan » 14.05.2020, 23:31

Tja, wenn man jetzt mal ein paar Tage frei hätte, hätte man jede Menge Material zum Basteln zusammen :)
Lieber dumm fragen, als dumm bleiben!

joggel
Establishment
Beiträge: 1450
Registriert: 06.11.2007, 19:06

Re: Webcam-Emulation Treiber

Beitrag von joggel » 20.05.2020, 12:30

Lief mir gerade vor die Flinte.
Hab nicht großartig nachgelesen wie und wo man das verwenden kann.

https://github.com/senguptaumd/Background-Matting
CEO of Dirty Codez Production®

Benutzeravatar
Chromanoid
Moderator
Beiträge: 3890
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Webcam-Emulation Treiber

Beitrag von Chromanoid » 20.05.2020, 12:51

Ah darüber habe ich schon oft nachgedacht. Cooler Fund, Danke!

Antworten