2016-12-24 7 views
5

次のようにして、オーディオとビデオのソース制約(現在のところ、Chromeのサポートのみに興味があります)を使用して、ウェブオーディオAPIで選択したマイクがミュートされているかどうかを確認する

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

ユーザーが選択した入力デバイスが現在ミュートされているかどうかを検出する公開されたAPIがあるかどうかは知っていますか?入力デバイスは、オンボードマイク、外部マイク、またはハードウェアデバイスとしてシステムに表示されるソフトウェア定義マイクのいずれかになります。

答えて

3

あなたはMediaStream.getAudioTracks()法によって、または配列から、インデックスによってMediaStreamTrackを選択することで、返される配列を反復することにより、プロパティに各MediaStreamTrack.mutedBoolean値を確認することができます。

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'をチェックし、変更されていないことを確認してください。 –

関連する問題