2015-01-12 65 views
9

WebRTCのローカルオーディオ再生のみをミュートしようとしています。具体的には、getUserMedia()の後でサーバー接続を行う前にミュートします。私が見つけた選択肢のどれもが働いていませんでした。WebRTC - ローカルオーディオ出力をミュートする方法

var audioTracks = localMediaStream.getAudioTracks(); 
// if MediaStream has reference to microphone 
if (audioTracks[0]) { 
    audioTracks[0].enabled = false; 
} 

source

この手法は "作業" としてもdescribed hereですが、クロームバージョン39.0.2171.95(64ビット)(Ubuntuの14.04)で、ここで失敗:Muazカーンからこれは失敗します。

ボリュームゲイン使用して動作するように言われている追加の方法:

window.AudioContext = window.AudioContext || window.webkitAudioContext; 
var audioContext = new AudioContext(); 
var source = audioContext.createMediaStreamSource(clientStream); 
var volume = audioContext.createGain(); 
source.connect(volume); 
volume.connect(audioContext.destination); 
volume.gain.value = 0; //turn off the speakers 

TLを、drは私が私のスピーカーの上で私のマイクからの入力を聞きたくないが、私は私のビデオを見たいん画像。

回避策

この回避策はBenjamin Trentによって示唆された、それはそうのようなビデオタグにミュート属性を設定することで、音声をミュート:

document.getElementById("html5vid").muted = true; 

Also similar question, but its for video, so not the same

+0

なぜミュートにHTMLのvideoタグを設定していませんか? –

+1

これは私の場合は理想的ではありませんが、音声のみのミュートがタグでサポートされていますか? –

+1

ビデオhtmlタグをミュートすると、動画に関連付けられた音声がミュートされます。ビデオは引き続き再生され、ストリーム内のオーディオトラックとビデオトラックは引き続きアクセス可能で、別のピアに送信することができます。しかし、ubuntu上のChromeリリースで対処する必要があるというバグが見つかりました。 –

答えて

4

のようにこれを追加します事実上の正解であるため、答え:

あなたは、回避策として記載することは、多くの大手のWebRTCビデオ・プラットフォームで使用されるものです:

navigator.mediaDevices.getUserMedia({ video: true, audio: true }) 
    .then(stream => { 
    const vid = document.getElementById('html5vid'); 
    vid.autoplay = true; 
    vid.muted = true; 
    vid.srcObject = stream; 
    }); 
関連する問題