2015-03-25 35 views
5

WebRTC üzerinde çalışıyorum yerel ağ üzerinde iki android cihazlar arasında canlı akışı yapıyorum ses kalitesi sorunu dışında ses ve yankı ses dışında benim için oldukça iyi çalışıyor. Bir ucunda eller serbest kullanırsam daha iyi olur ama eller serbest kullanmak istemiyorum.Ses ve gürültü içinde ses webRTC android

Ses kalitesini nasıl geliştirebilirim, ses kalitesini iyileştirmek için hangi teknikler vardır. Ayrıca, webRTC'nin yankı iptal etme işlevinin, yankı neden hala mevcutsa, yerleşik olduğunu söyledi.

cevap

1

Sanırım her iki mikrofon tarafından yeniden çalınan 2 ses çıkışı olan Larsen efekti, sonsuz ses döngüleri yaratıyorsunuz. fazla bir şey yok her iki cihaz aynı odada ise bu karşı yapabilirsiniz ancak aslında tarayıcılar bu şekilde (varsayılan olarak emin değil) etkinleştirebilirsiniz yankı iptal seçenek vardır: dilsiz Ayrıca

if (window.chrome) { 
     audioConstraints = { 
      mandatory: { 
       echoCancellation: true 
      } 
     } 
    } else { 
     audioConstraints = { 
      echoCancellation: true 
     } 
    } 
    var constraints = {video: videoConstraints, audio: audioConstraints}; 
    navigator.getUserMedia(constraints, userMediaSuccess, userMediaError); 

Yerel video, kullanıcıların açıkça buna gerek yok.

1

Neler oluyor, kendi yerel sesinizi kendi kendinize oynatıyorsunuz. Bu mikrofon ve hoparlörler arasında bir geribildirim döngüsü oluşturur. Bu yüzden eller serbest cihazınız olduğunda daha iyi geliyor. Sen getUserMedia() akışını değiştirerek yerel ses kaldırabilirsiniz:

var constraints = {video: true, audio: true}; 
getUserMedia(constraints, function(stream){ 
    var videoOnly = new MediaStream(stream.getVideoTracks()); 
}, errorHandler); 
+0

bulabilirsiniz Bunu android sonunda nasıl yapabilirim? – umerk44

+0

@ umerk44 Kullanıcınızın video ve ses akışını almak için yazdığınız kodun bir kısmını eklemek için sorunuzu düzenleyebilir misiniz? –

2

Sen ses kaynağını oluştururken özel ses kısıtlamaları eklemeyi deneyebilirsiniz. gibi Gelmeli görünüyor:

MediaConstraints audioConstarints = new MediaConstraints(); 
audioConstarints.mandatory.add(new MediaConstraints.KeyValuePair("googNoiseSuppression", "true")); 
audioConstarints.mandatory.add(new MediaConstraints.KeyValuePair("googEchoCancellation", "true")); 

ses özellikleri ile ilgili çoklu ortam kısıtlamaları çok şey var ve ben onlardan farklı kombinasyonlar denemek önermek, tam liste Aslında ben çok robot üzerinde kodlama ediyorum burada https://chromium.googlesource.com/external/webrtc/+/master/talk/app/webrtc/mediaconstraintsinterface.cc

İlgili konular