2016-12-24 50 views
5

通過使用以下內容,我們可以提示用戶選擇具有音頻和視頻源限制(目前僅對Chrome支持感興趣)的首選媒體輸入設備。檢查選定的麥克風是否靜音或不使用網絡音頻API

navigator.mediaDevices.getUserMedia({audio: true}) 
    .then((stream) => { 
    console.log(stream); 
    }); 

任何人都知道是否有暴露的API來檢測用戶選擇的輸入設備是否當前被靜音?輸入設備可以是板載麥克風,外部麥克風或軟件定義的麥克風,在系統中顯示爲硬件設備。

回答

3

可以通過迭代通過MediaStream.getAudioTracks()方法返回的數組檢查屬性中的每個MediaStreamTrack.mutedBoolean值,或通過從陣列由索引選擇MediaStreamTrack

navigator.mediaDevices.getUserMedia({audio: true}) 
    .then(stream => { 
    console.log("MediaStreamTrack muted:", stream.getAudioTracks()[0].muted); 
    }) 
    .catch(err => console.log(err)); 

您還可以利用muteunmuteMediaStreamTrack事件。

+1

這似乎並不反映Chrome 57(Windows 10)中麥克風的實際靜音狀態,即使通過deviceId選擇了特定的非默認麥克風。 –

+1

@ChrisHunt也可以設置'contraints'的'volume'屬性。請參閱[功能,約束和設置](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/applyConstraints)。麥克風是如何靜音的?你能描述如何重現案件嗎?你把'onmute','onunmute'事件附加到'MediaStreamTrack'上了嗎? – guest271314

+2

首先在托盤>聲音圖標上下文菜單>錄製設備>音頻下識別啓用的麥克風。使用'navigator.mediaDevices.enumerateDevices()'來標識具有相同標籤的設備的'deviceId'。使用'navigator.mediaDevices.getUserMedia({audio:{deviceId:'...'}})'選擇設備。驗證'track = stream.getTracks()[0]'匹配設備並檢查'track.muted'。通過「錄音設備」對話框中特定設備的「級別」選項卡使麥克風靜音。檢查'track.muted',看看它沒有改變。 –