2016-07-22 23 views
2

Wir verwenden Atom Elektron, um eine App in einem "Kiosk" Typ Einstellung zu betreiben, haben wir 4 Webcam-Geräte mit dem physischen Computer verbunden, wollen wir speziell 1 von denen verwendet werden für webrtc innerhalb des electron browsers, dann benutzen wir anderen C-code um Standbilder zu erfassen. Wir kennen den USB-Pfad oder das/dev/video {#} für das gewünschte Gerät.Elektron deaktivieren bestimmte Kamera Gerätezugriff oder setzen Standard-Webcam

Gibt es eine Möglichkeit, den Zugriff der Ansichtsschicht auf die 3 Webcams im Knoten zu deaktivieren, bevor das Elektronenfenster gestartet wird? Oder eine andere Option besteht darin, die Standardkamera vor dem Start der Ansichtsebene so einzustellen, dass sie standardmäßig auf die gewünschte Webcam eingestellt ist.

In der Ansichtsschicht können wir eine Liste von Geräten sehen und sehen, ob sie Audio oder Video sind, aber wir können ihre/dev/video # oder ihren USB-Pfad nicht herausfinden, welches Ziel die webrtc-Kamera ist Das war noch nicht sehr hilfreich.

Jede Hilfe ist großartig, ich fühle mich seltsam, eine Frage zu stellen, da ich in den letzten 12 Jahren gefunden habe, was ich brauchte, aber es war ungefähr 3 Stunden, also ist es Zeit um Hilfe zu bitten.

Antwort

2

Ich denke nicht, dass Chromium eine Möglichkeit bietet, den USB-Pfad für eine Medienquelle abzurufen. Sie müssen wahrscheinlich einen Konfigurationsbildschirm anzeigen, damit der Benutzer beim ersten Mal die richtige Kamera auswählen kann (ähnlich dieser demo) und ab diesem Zeitpunkt die Quell-/Geräte-ID als obligatorische Einschränkung verwenden kann.

Eine andere Option ist es, die richtige Kamera anhand des Geräteetiketts zu finden, obwohl dies natürlich nur funktionieren wird, wenn jede Kamera ein bestimmtes Etikett hat. Sie können alle Geräteetiketten und IDs erhalten, indem diese Schnipsel in der DevTools Konsole ausgeführt wird:

navigator.mediaDevices.enumerateDevices() 
.then(devices => devices.forEach(
    device => console.log(`kind: ${device.kind}: ${device.label} id=${device.deviceId}`) 
)) 
.catch(err => console.log(err)); 

So oder so, wenn Sie die Quelle/Geräte-ID haben, können Sie es als zwingende Einschränkung angeben, um sicherzustellen, dass nur, dass man bestimmte Kamera wird verwendet:

navigator.webkitGetUserMedia(
    { 
    audio: false, 
    video: { 
     mandatory: { 
     chromeMediaSourceId: 'the camera source id obtained earlier', 
     } 
    } 
    }, 
    stream => console.dir(stream), 
    error => console.log(error) 
);