- Android 14 reduziert die bisher übliche Nutzung separater Apps für PC-Webcams und ermöglicht auf OS-Ebene einen USB-Webcam-Modus
- Eine neue Option in den USB-Einstellungen kann das Gerät in den UVC(USB Video Class)-Modus versetzen, sodass Windows-, macOS- und Linux-PCs es als standardmäßige USB-Webcam erkennen
- Die Funktion wird jedoch nicht automatisch aktiviert; Kernel-Konfiguration, UVC-Konfiguration, USB-HAL-Update und die System-App Webcam Service müssen zusammenpassen
- Webcam Service leitet Camera2-API-Frames an den
/dev/video-Knoten weiter, und Nutzer können in einer Benachrichtigung Vorschau, Zoom und Objektivwechsel steuern - Selbst Geräte, die auf Android 14 aktualisiert wurden, können wegen älterer Kernel oder HAL-Einschränkungen ausgeschlossen sein; die tatsächliche Unterstützung hängt von der Implementierung des Herstellers ab
USB-Webcam-Modus in Android 14
- Ab Android 14 kann die Funktion, ein Smartphone als Webcam für den PC zu verwenden, direkt in Android OS selbst integriert sein
- Während der COVID-Zeit nahm die Nutzung von Videokonferenz-Plattformen wie Zoom und Google Meet zu, aber gute Webcams waren schwer zu bekommen oder teuer, und die Qualität integrierter Notebook-Webcams war ebenfalls begrenzt
- Smartphone-Kameras liefern meist eine bessere Bildqualität als die meisten Webcams, daher nutzten viele Anwender bisher Drittanbieter-Software, um ihr Smartphone wie eine Webcam einzusetzen
- In den USB-Einstellungen kann unter Android 14 die Option USB webcam erscheinen
- Zu den bisherigen USB-Modi gehören Dateiübertragung/Android Auto(MTP), USB-Tethering(NCM), MIDI und PTP
- Wenn USB webcam ausgewählt wird, wechselt der USB-Modus bei unterstützten Geräten zu UVC
- Verbundene Windows-, macOS- und Linux-PCs erkennen das Android-Gerät als standardmäßige USB-Webcam
- Möglicherweise funktioniert dies auch mit anderen Android-Geräten
Voraussetzungen zur Aktivierung der Funktion
- Die Webcam-Unterstützung in Android 14 ist keine standardmäßig aktivierte Funktion
- Für den tatsächlichen Betrieb sind vier Voraussetzungen nötig
- Aktivierte Linux-Kernel-Konfiguration
- UVC gadget-Konfiguration
- USB-HAL-Update
- Vorinstallierte neue System-App
Anforderungen an die Kernel-Konfiguration
- Die erforderliche Linux-Kernel-Konfiguration ist
CONFIG_USB_CONFIGFS_F_UVC - Diese Einstellung ist erforderlich, damit ein Android-Gerät als UVC gadget eingebunden werden kann
- Viele Geräte, die auf Android 14 aktualisiert werden, und fast alle Geräte, die mit Android 14 erscheinen, dürften einen Kernel mit aktivierter Einstellung besitzen
- Im Generic Kernel Image(GKI) ist diese Einstellung ab
android12-5.10standardmäßig aktiviert - Geräte, die mit Android 12 oder neuer ausgeliefert werden und Linux kernel 5.10 oder neuer verwenden, müssen einen GKI-Kernel einsetzen
- Im Generic Kernel Image(GKI) ist diese Einstellung ab
- Da größere Kernel-Versions-Upgrades im Android-Ökosystem selten sind und durch das Google Requirements Freeze(GRF)-Programm auch ältere Herstellerimplementierungen zertifiziert werden können, unterstützen manche Geräte mit Android-14-Upgrade die USB-Webcam-Funktion möglicherweise nicht
- Am direktesten lässt sich die Unterstützung prüfen, indem Kernel-Version und aktivierte Einstellung kontrolliert werden
- Kernel-Version prüfen:
adb shell "cat /proc/version"
- Kernel-Konfiguration prüfen:
adb shell "zcat /proc/config.gz | grep 'CONFIG_USB_CONFIGFS_F_UVC'"
- Kernel-Version prüfen:
- Als Beispiel nutzt das Galaxy Z Fold 5 mit Android 13 den
android13-5.15-GKI und hatCONFIG_USB_CONFIGFS_F_UVC=y; bei einem Upgrade auf Android 14 könnte es die USB-Webcam-Funktion unterstützen, sofern auch die übrigen Voraussetzungen erfüllt sind
System-App Webcam Service
- Einige Android-14-QPR1-Betas für Pixel-Geräte enthalten eine neue System-App namens Webcam Service
- Der Paketname ist
com.android.deviceaswebcam - Sie hängt von der Shared Library
libjni_deviceAsWebcam.soab - Diese App und Bibliothek sollen in der geplanten Quellcode-Veröffentlichung von Android 14 enthalten sein
- Der Paketname ist
- Die App Webcam Service implementiert den DeviceAsWebcam-Dienst, der ein Android-Gerät in eine Webcam verwandelt
- Dieser Dienst leitet Kameraframes an einen
/dev/video-Knoten weiter, den das Host-Gerät lesen kann - Laut der SELinux-Richtlinie kann auf den
/dev/video-Knoten nur ein Prozess in der Domänedevice_as_webcamzugreifen- Tatsächlich ist das nur die System-App Webcam Service
- Daher kann die native USB-Webcam-Unterstützung in Android 14 von Geräteherstellern genutzt werden, jedoch nicht direkt von Drittanbieter-Apps
Start der USB-Webcam und Benutzersteuerung
- Wenn in den USB-Einstellungen die neue Option USB webcam aktiviert wird, sendet das System den Intent
android.hardware.usb.action.USB_STATE- Der Intent enthält die Extras
connectedunduvc
- Der Intent enthält die Extras
- Webcam Service besitzt einen Receiver, der diesen Intent empfängt
- Das Extra
uvcist auftruegesetzt - Die Framework-Methode
android.hardware.usb#isUvcSupportEnabled()gibttruezurück - Wenn beide Bedingungen erfüllt sind, wird der Systemdienst gestartet
- Das Extra
isUvcSupportEnabled()gibttruezurück, wenn die Systemeigenschaftro.usb.uvc.enabledauftruegesetzt ist- Diese Eigenschaft muss vom OEM zur Build-Zeit gesetzt werden
- Andernfalls erscheint die Option USB webcam nicht in den USB-Einstellungen und Webcam Service wird nicht gestartet
- Diese Eigenschaft kann nur von System-Apps wie Settings und Webcam Service gelesen werden
- Sobald Webcam Service gestartet ist, erscheint eine neue Benachrichtigung, über die der Nutzer die Webcam konfigurieren kann
- Beim Antippen der Benachrichtigung öffnet sich eine Kameravorschau
- Nutzer können hinein- und herauszoomen oder das Objektiv wechseln
- Intern startet die App Webcam Service einen foreground service, damit sie nicht vom System beendet wird
- Sie verwendet die Camera2 API und unterstützt Streaming in 720p(1280×720) oder 1080p(1920×1080)
- Auf dem verbundenen Host wird der Webcam-Gerätename als Android Webcam angezeigt
ConfigFS und USB HAL
- Der auf dem Host angezeigte Name, Videoparameter und die genaue Kodierung hängen davon ab, wie der Gerätehersteller das UVC gadget über configfs konfiguriert
- Bei Tensor-basierten Pixel-Geräten befindet sich Googles Konfiguration der UVC-gadget-Funktion in den Dateien
init.gs[101|201].usb.rcunter/vendor/etc/init/hw - Damit Android den in den Einstellungen ausgewählten USB-Modus auf UVC umschalten kann, ist ein aktualisiertes USB HAL erforderlich
- Wegen des GRF-Programms erhalten viele Geräte, die auf Android 14 aktualisiert werden, möglicherweise kein aktualisiertes USB HAL; in diesem Fall funktioniert die Funktion nicht
Plattformunterstützung und Grenzen
- Durch Googles Implementierung einer nativen USB-Webcam-Funktion in Android können Gerätehersteller, die diese Funktion möchten, sie übernehmen
- Wenn die App Webcam Service wie erwartet in AOSP aufgenommen wird, können Gerätehersteller sie für die Implementierung der Webcam-Funktion nutzen
- Es lässt sich mit Apples Continuity Camera vergleichen, aber der Android-Ansatz funktioniert plattformübergreifend
- Telefone mit Android 14, die die Voraussetzungen erfüllen, können in eine standardmäßige USB-Webcam umgeschaltet und auf jedem PC verwendet werden
1 Kommentare
Meinungen auf Hacker News
scrcpy eignet sich für diesen Zweck bereits hervorragend: https://github.com/Genymobile/scrcpy
Wenn man die Smartphone-Kamera in OBS streamen will, wartet man per
adbauf das Gerät, holt sich die IP vonwlan0, verbindet sich dann mitadb tcpip 5555undadb connectund führt anschließendscrcpy -e --v4l2-sink=/dev/video0 --lock-video-orientation=1 -n -NausWenn man aus dem Source bauen kann, habe ich auf den PR noch zusätzliche Commits draufgesetzt; sie unterstützen Androids eingeschränkten High-Speed-Capture-Modus, womit Kamera-Streaming mit 120 fps/240 fps möglich wird. Für Meetings ist das nicht besonders nützlich, aber zum Aufnehmen von Mixed-Reality-VR-Videos mit hoher Framerate ist es praktisch. Soweit ich weiß, gibt es weder proprietär noch als Open Source eine Android-Webcam-App, die über 60 fps hinausgeht
adb-Toolset hast, würde mich dein Rat zu zwei Dingen interessieren, die mir noch fehlen. Das eine ist, einen festen Port für ADB/TCP einzurichten oder ihn automatisch an den PC weiterzuleiten; Android ändert den Port inzwischen jedes Mal. Das andere ist, ADB/TCP über den mobilen Hotspot zu aktivieren, wobei Android mit „Please connect to WiFi“ meckertAbgesehen von diesen beiden Punkten ist die Linux-Android-Integration dank scrcpy, KDE Connect und Waydroid fast perfekt und sogar so gut, dass Apple-Nutzer neidisch werden könnten
Ein bisschen abseits des Themas, aber als ich während des Lockdowns nach einer Möglichkeit suchte, ein iPhone als Webcam zu verwenden, bin ich auf VDO.Ninja gestoßen: https://vdo.ninja/
Anfangs war es ein Mittel, um einen Videofeed an OBS zu senden, und damit habe ich einen Webcam-Eingang nachgebaut. Als das Projekt größer wurde, ließ es sich auch für Zoom-ähnliche Zwecke nutzen, bei denen Desktop-Video- und Audiofreigabe direkt im Browser auftauchen; dadurch konnte ich virtuelle Filmabende aus der Ferne veranstalten
Es geht zwar auch über die UI zum Erstellen von Räumen, aber alles lässt sich allein über URL-Parameter konfigurieren, was deutlich flexibler und robuster war: https://docs.vdo.ninja/master/how-does-it-work
Erstellt man Sender- und Empfänger-URLs, werden sie automatisch per WebRTC verbunden. Zum Beispiel konnte man eine Quelle erstellen, die ein VLC-Fenster aufnimmt und Video sowie Audio sendet, während zwei Ziel-URLs dieses Video und Audio empfangen und zusätzlich jeweils ihr Mikrofon-Audio gegenseitig senden. So konnte man im Browser gemeinsam einen Film sehen und hören und dabei miteinander sprechen. Ich habe mit diesem Projekt keinerlei Verbindung; ich finde es einfach wirklich hervorragend
OBS ist ein Tool, mit dem man den Computerbildschirm etwa zu Twitch streamt: https://obsproject.com/
Eine willkommene Zusatzfunktion. Unternehmen haben Zeit und Aufwand investiert, um Kameras mit Funktionen wie Tracking oder Porträtmodus zu bauen
Allerdings fühlt es sich etwas spät an, verglichen mit dem Zeitpunkt während der Pandemie, als plötzlich alles remote wurde und alle verzweifelt Webcams suchten. Es wäre schön gewesen, wenn diese Funktion damals angeboten worden wäre, statt einen zum Kauf von Drittanbieter-Apps zu bringen
Für mich ist das viel zu wenig und viel zu spät. Ich will nicht jemand sein, der solche „Hot Takes“ raushaut, aber kurz gesagt: Bis 2013 habe ich ohne Handy nur ein Festnetztelefon genutzt, dann mit einem Nexus 4 angefangen und alle 2–3 Jahre bis zum Pixel 6 gewechselt. Morgen wird aber mein erstes iPhone geliefert.
Es gibt viele Gründe. Man kann ein Google-Phone nicht an ein externes Display anschließen, um es zu spiegeln, und die DisplayPort-Ausgabe ist im Quellcode ohne Grund ausdrücklich deaktiviert: https://twitter.com/MishaalRahman/status/1189998588023234560 Auf anderen Phones funktioniert das problemlos.
Auf die SMS eines Android-Phones kann man ohne separate App ebenfalls nicht zugreifen.
adb backuphabe ich ausprobiert, das geht auch nicht; mit Rooting wäre es vielleicht möglich, aber soweit ich weiß, wird beim Rooting-Prozess normalerweise alles gelöscht.Auch auf Phone-Backups kann man nicht zugreifen. Sie werden ausschließlich auf Google-Servern gespeichert, und die einzige Möglichkeit, auch nur in die Nähe davon zu kommen, ist die Wiederherstellung auf einem Phone. Ich halte physisch ein Gerät in der Hand, das ich gekauft habe, kann aber nicht auf alles darin zugreifen. Ein iPhone kann man an Windows oder Mac anschließen und das Backup auf den Computer dumpen; darin sind Nachrichten, Systemeinstellungen, Kontakte, Fotos, Datenbanken, praktisch alles enthalten. Hardware-geschützte Schlüssel sind vielleicht die Ausnahme.
Von Googles Spielchen muss man gar nicht erst anfangen: Messenger-Wildwuchs, eingestellte Dienste, mangelhafter Support, stärkere Integration von Werbung und Tracking und so weiter. Apple ist auch nicht perfekt, aber für eine Weile fühlt es sich so an, als wäre der Walled Garden einen Versuch wert. Unter iOS gibt es Display-Ausgabe, Zugriff auf das eigene Gerät, Messaging, das Sinn ergibt, und zumindest das Gefühl, dass Datenschutz eine Rolle spielt. Paradoxerweise habe ich bei Apple-Produkten mehr das Gefühl von Kontrolle als bei Google-Produkten.
Zum Beispiel kann man weder die Ladegeschwindigkeit noch die voraussichtliche Ladezeit sehen, daher ist es schwer zu prüfen, ob man unter mehreren Ladegeräten wirklich das iPhone-kompatible Schnellladegerät samt Kabel erwischt hat. Und selbst wenn Chrome oder Firefox installiert ist, landet man in Safari, wenn man Text markiert und Websuche drückt. Es gibt viele solcher kleinen Ärgernisse, und weil das Betriebssystem so geschlossen ist, kann man nichts dagegen tun.
Android lässt sich viel leichter anpassen, und auch Sideloading, etwa um einen GBA-Emulator auf dem iPhone laufen zu lassen, ist dort einfacher. Im Android-Ökosystem gibt es auch interessantere Geräte wie Samsungs Flip-Phones. Die Integration mit dem Mac-Ökosystem ist gut, aber es ist schwer zu sagen, dass eine Seite eindeutig besser wäre.
Von den Diensten, die Google eingestellt hat, hat mich keiner betroffen, und ich bin mir auch nicht sicher, was mit Messenger-Wildwuchs gemeint ist. Auch ist nicht klar, welcher Support genau fehlt.
Das Pixel 1 XL war großartig, aber nach etwa zwei Jahren versagte die Kamera ständig, brauchte mehr als 3 Sekunden zum Starten oder stürzte häufig ab. Am Ende wurde die Akkulaufzeit schlecht, und auch der Ersatzakku baute nach wenigen Monaten ab, also bin ich weitergezogen.
Das Pixel 3a fiel mir zwei Monate vor Ende der Sicherheitsupdates aus der Tasche und ging kaputt. Insgesamt war es ein ordentliches Phone, aber Google hat es nicht so lange unterstützt, wie ich erwartet hatte. Das Pixel 6 Pro ist bisher okay, aber das Pixel 5 meiner Frau hat Probleme wie langsame Performance und instabile Mobilfunkverbindung.
Vielleicht lautet die Lehre: „Kauf kein Pixel-Phone“, aber die Alternativen können sicherheitstechnisch noch eher ein Albtraum sein. Auf Galaxy-Phones war eine unglaubliche Menge an Müll-Apps vorinstalliert, die man entfernen muss. Beim Pixel sind es nur Google-Apps, und die meisten lassen sich entfernen; daher sind meine Datenschutz- und Sicherheitsbedenken geringer als bei 30 vorinstallierten Firmen-Apps, die man möglicherweise nicht löschen kann.
Ich habe Apple über Jahre viel kritisiert, und es ist enttäuschend, dass ein Plattformwechsel am Ende wie die beste Option aussieht.
Einige der Unannehmlichkeiten klingen ziemlich nervig, aber nicht so nervig, dass ich Einschränkungen akzeptieren würde, bei denen ich eine regelmäßige Abo-Gebühr zahlen muss, um auf einem Computer meiner Wahl Code zu schreiben und ihn auf meinem Phone oder dem Phone eines Freundes auszuführen, und ihn dann Prüfern vorlegen muss, die ihn aus beliebigen Gründen ablehnen können.
Auf solchen Systemen ist Root-
adb-Zugriff möglich, und damit kann man auch auf die SQLite-Datenbank der SMS zugreifen. Bildschirmspiegelung über den DP-Alt-Mode von USB-C funktioniert standardmäßig, und man kann auch den „Desktop-Modus“ von Android aktivieren, der allerdings noch ziemlich rudimentär und experimentell ist.Fairphone bietet langen Support, ist leicht zu reparieren und kann auch einen Mainline-Kernel ausführen (postmarketOS usw.). Natürlich ist jedes Android-Phone auf Betriebssystemebene weiterhin in gewisser Weise von Google abhängig.
Ich stimme vielen Beschwerden über Google zu, aber zu Apple zu wechseln fühlt sich an, als würde man ein Übel gegen ein anderes tauschen. Ich würde ein Apple-Telefon nie als „meins“ bezeichnen, und ich habe auch nicht das Gefühl, dass Apple „Zugriff auf das eigene Gerät“ bietet.
Ich nutze seit über einem Jahr die App Camo. Sie funktioniert sehr gut und unterstützt auch die Kameraansicht über Wi‑Fi, sodass kein Kabel nötig ist. Der Basis-Account ist kostenlos: https://reincubate.com/camo/
Das mache ich schon seit ein paar Jahren. Ich weiß nicht, in welchem Sinne es dafür noch keine Unterstützung geben soll.
Wenn diese Funktion kommt, dürfte das derzeit 250 Dollar teure Pixel 6a die Webcam mit dem besten Preis-Leistungs-Verhältnis auf dem Markt werden.
Auf irgendeiner sehr nervigen Schnäppchen-Website stand, dass die Netzbetreiber-Sperre nach 6 Monaten automatisch aufgehoben wird. Einen Link setze ich nicht, weil diese Seite zu nervig ist. Um den 6-Monats-Timer zu starten, muss das Handy unbedingt aktiviert werden.
Soweit ich weiß, war das beim Nokia N900 schon 2009 mit gstreamer möglich. Ich habe zwar nicht wirklich ein Videogerät dafür erstellt, aber ich denke,
v4l2sinkgab es damals schon. Ich habe es einige Male zum Streamen mit einem Remote-Fenster und OpenCV verwendet.Das war das einzige wirklich gute Handy, das ich je hatte. Schön wäre, wenn solche Dinge auf Android-Geräten auch so einfach wären, aber seltsamerweise ist das fast nie der Fall.
Auch das ist schwierig und verdient Respekt. Aber es fühlt sich so an, als hätte diese harte, konservative Sicht auf Software die Dinge, die seit Langem gebaut werden, vollständig dominiert. Computing, das Power-Usern einen festen Stand bieten will, wird immer seltener. Technologie schafft weiter Distanz und wird immer undurchschaubarer. Ironischerweise gerade deshalb, weil wir ständig die Einstiegswege verlieren, um tiefer einzusteigen und Experten oder Entdecker zu werden.
Es wäre schön, wenn man ein Android-Handy als Dashcam verwenden könnte. Wann wird das möglich sein? Es wirkt wie eine Funktion, die eigentlich selbstverständlich sein sollte.
Das wäre zwar ein nettes Feature, aber die meisten werden ihr Smartphone wohl auch während eines Zoom-Calls in der Hand behalten wollen. Andererseits haben vielleicht viele Leute ein Ersatzhandy.