2015-01-12 24 views
9

WebRTC'de, özellikle getUserMedia() öğesinden sonra ve herhangi bir sunucu bağlantısından önce, yalnızca yerel ses çalmayı susturmaya çalışıyorum. İş bulduğum seçeneklerden hiçbiri;WebRTC - Yerel ses çıkışının sesini kapatma

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

source

Bu teknik "çalışma" olarak da described here olmakla Chrome Sürümü 39.0.2171.95 (64-bit) (Ubuntu 14.04) burada başarısız: Muaz Khan'dan bu başarısız olur.

hacim artışı kullanarak çalışmak söylenir

Ek yöntemi:

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 Hoparlörlerimle benim mikrofondan giriş duymak istemiyoruz, ancak videomu görmek istiyorum görüntüsü.

Geçici çözüm

Bu geçici çözüm Benjamin Trent tarafından önerildi ve o kadar gibi video etiketi üzerinde sessiz niteliğini ayarlayarak sesi kapatır:

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

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

+0

Neden sessiz html video etiketini ayarlanmamış? –

+1

Bu benim durumumda ideal değil, ancak etikette "yalnızca" ses kısımı destekleniyor mu? –

+1

video html etiketinin sessize alınması, videoyla ilişkilendirilen sesi keser. Video oynatmaya devam edecek ve akıştaki ses ve video parçaları hala erişilebilir olacak ve başka bir eşe gönderilebilecektir. Yine de, ubuntu'daki Chrome sürümünde ele alınması gereken bir hata buldunuz. –

cevap

4

olarak bu ekleme Cevap doğru fiili doğru olduğu için:

Eğer geçici bir çözüm olarak belirtilen Ne 210

birçok büyük WebRTC video platformları tarafından ne kullanılır edilir:

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