2015-03-25 285 views
5

我正在webRTC我做兩個Android設備之間的本地網絡上的直播流它對我來說工作相當好,除了音質問題有噪音和回聲在聲音。如果我在一端使用免提,它會變得更好,但我不想使用免提。回聲和噪音在聲音webRTC android

那麼,我該如何改善音質,還有哪些技巧可以改善音質。它還表示webRTC具有內置的回聲消除功能,而不是回聲仍然存在的原因。

回答

1

我想你正在經歷拉森效應,這兩個麥克風重放2個音頻輸出,創造無限的音頻循環。 沒有什麼可以做針對這一點,如果兩個設備都在同一個房間,但確確實實的瀏覽器有一個可以激活這種方式(不知道他們是默認情況下)回聲消除選項:

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

此外,靜音本地視頻,用戶顯然不需要它。

1

發生什麼事是你正在播放自己的本地音頻回到自己。這會在您的麥克風和揚聲器之間創建一個反饋環路這就是爲什麼當你有免提設備時它聽起來更好。您可以通過修改getUserMedia()的流刪除本地音頻:

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

其實我編碼在Android這樣我怎麼能在android端做到這一點? – umerk44 2015-03-26 07:58:51

+0

@ umerk44你可以編輯你的問題,包括你寫的一些代碼來獲取用戶的視頻和音頻流? – 2015-03-26 08:28:42

2

您可以嘗試在您創建音頻源添加特殊的音頻約束。它應該是這樣的:

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

有很多相關的音頻功能,媒體的限制,我建議嘗試它們的不同組合,完整的列表,你可以在這裏找到https://chromium.googlesource.com/external/webrtc/+/master/talk/app/webrtc/mediaconstraintsinterface.cc