2016-07-22 50 views
2

我們使用原子電子在「信息亭」類型設置中運行應用程序,我們有4個攝像頭設備連接到物理計算機,我們特別要使用其中一個對於電子瀏覽器內部的webrtc,則其他3我們使用一些C代碼來捕獲靜止幀。我們知道USB路徑或我們想要的設備的/ dev/video {#}。電子禁用特定的攝像頭設備訪問或設置默認的攝像頭

在我們啓動電子窗口之前,有沒有辦法禁止視圖層訪問節點中的3個攝像頭?或者,另一種選擇是在啓動視圖圖層之前設置默認攝像頭,以便默認使用我們想要的攝像頭。

在視圖層我們可以得到一個設備列表,看看它們是音頻還是視頻,但是我們無法得到他們的/ dev/video#或他們的USB路徑來找出哪一個是目標webrtc凸輪,所以這還沒有很好的幫助。

任何幫助都很好,我覺得很奇怪,因爲在過去的12年中,我已經能夠通過搜索找到我需要的東西,但是它已經有3個小時的時間來尋求幫助。

回答

2

我不認爲Chromium提供了一種方法來檢索媒體源的USB路徑。您可能需要顯示配置屏幕以允許用戶第一次選擇正確的攝像頭(類似於此demo),然後使用源/設備ID作爲此時的強制約束。

另一種方法是根據設備標籤找到正確的相機,但顯然這隻適用於每個相機都有明顯標籤的情況。您可以通過在DevTools控制檯中運行這個片段讓所有的設備標籤和標識:

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

無論哪種方式,一旦你的源/設備ID,您可以將其指定爲強制性的約束,以確保只有一個特別使用相機:

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