2015-03-25 8 views
5

Ich arbeite an WebRTC Ich mache Live-Stream zwischen zwei Android-Geräten im lokalen Netzwerk funktioniert es ziemlich gut für mich außer der Klangqualität Problem gibt es Rauschen und Echo in Sound. Wenn ich an einem Ende freihändig benutze, wird es besser, aber ich möchte nicht freihändig verwenden.Echo und Rauschen im Sound webRTC android

Also wie kann ich die Klangqualität verbessern, welche Techniken gibt es, um die Klangqualität zu verbessern. Es sagte auch, dass der WebRTC eingebaute Echokompensation-Funktionalität hat, wenn es darum geht, warum Echo immer noch da ist.

Antwort

1

Ich nehme an, Sie erleben den Larsen-Effekt, der 2 Audioausgang wird von beiden Mikrofonen wiedergegeben und erzeugt endlose Audioschleifen. Es gibt nicht viel können Sie dagegen tun, wenn beide Geräte im selben Raum sind, aber in der Tat Browser haben Echo Cancellation Optionen, die Sie auf diese Weise aktivieren kann (nicht sicher, ob sie standardmäßig sind):

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

Auch stumm das lokale Video, Nutzer brauchen es offensichtlich nicht.

1

Was passiert ist, dass Sie Ihre eigenen lokalen Audio zu sich selbst spielen. Dies erzeugt eine Rückkopplungsschleife zwischen Ihrem Mikrofon und den Lautsprechern. Deshalb klingt es irgendwie besser, wenn Sie die Freisprecheinrichtung haben. Sie können die lokale Audio entfernen durch Modifizieren des Stroms von getUserMedia():

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

finden Eigentlich auf Android Ich bin Codierung so Wie kann ich das auf Android beenden? – umerk44

+0

@ umerk44 können Sie Ihre Frage so bearbeiten, dass sie einen Teil des Codes enthält, den Sie geschrieben haben, um den Video- und Audiostream eines Benutzers zu erhalten? –

2

Sie können versuchen, spezielle Audio-Einschränkungen hinzufügen, wenn Sie Audio-Quelle erstellen. Es sollte wie folgt aussieht:

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

Es gibt eine Menge von Medien Einschränkungen ist zu Audio-Funktionen im Zusammenhang und ich schlage vor, verschiedene Kombinationen von ihnen, vollständige Liste zu versuchen, können Sie sich hier https://chromium.googlesource.com/external/webrtc/+/master/talk/app/webrtc/mediaconstraintsinterface.cc