2015-04-29 10 views
13

Ich versuche gerade, über webrtc einen möglichst sauberen Audiokanal zu bekommen. Über die getUserMedia mediaconstraints Objekt, habe ich die folgenden Optionen festlegen:WebRTC - alle Audiobearbeitung deaktivieren

constraints: { 
     audio: { 
      mandatory: { 
       echoCancellation: false, 
       googEchoCancellation: false, 
       googAutoGainControl: false, 
       googAutoGainControl2: false, 
       googNoiseSuppression: false, 
       googHighpassFilter: false, 
       googTypingNoiseDetection: false, 
       //googAudioMirroring: false // For some reason setting googAudioMirroring causes a navigator.getUserMedia error: NavigatorUserMediaError 
      } 
     }, 
     video: false 
    }, 

Dies verbessert die Audioqualität, aber es scheint immer noch Audioverarbeitung vorhanden zu sein, die die Verstümmelung des Audio in Form von Hochfrequenz verursacht Rauschen mit einigen der Testproben.

Es gibt eine Chrome-Flagge --use-file-for-fake-audio-capture wie unter http://peter.sh/experiments/chromium-command-line-switches/#use-file-for-fake-audio-capture beschrieben, die Eingabe über Datei zum Testen ermöglicht. Wie in der Beschreibung des Flags erwähnt, muss die gesamte Audioverarbeitung deaktiviert werden oder das Audio wird verzerrt - so scheint es zusätzliche Optionen für diesen Zweck zu geben.

Ich habe auch versucht, die Chrome Flags, aber immer noch scheint es einige Audio-Verarbeitung zu sein.

Gibt es eine Möglichkeit, die noch vorhandene Audioverarbeitung zu deaktivieren (vorzugsweise über JS API)?

+0

Tritt dies lokal oder in einer Peer-Verbindung auf? Es könnte sein, dass Chrome die Bitrate dynamisch für Opus ändert (dies ist nur der Fall, wenn Sie dies in einer Verbindung bemerken). –

+0

Über eine Peer-Verbindung. Ich denke, es ist eine Art Sprach-Audio-Optimierung. Steigt immer mit der Zeit nach, die ein Sample gespielt hat. – wowpatrick

+0

Ich lese es, damit ich sicher sagen kann, dass die Bitrate entsprechend der verfügbaren Bandbreite angepasst wird. – Robert

Antwort

1

Ich wette, dass die Variable Bitrate (Standard) Verhalten des Opus-Codec verursacht einige Komprimierung oder Anpassung. Sie könnten das SDP-Angebot manuell verkürzen, um CBR (konstante Bitrate) anstelle von VBR (variable Bitrate) zu verwenden.

a=fmtp:111 minptime=10; useinbandfec=1 

zu: Wenn Sie das SDP-Angebot aus dem Browser heraus zu bekommen, ändern Sie die Zeile

a=fmtp:111 minptime=10; cbr=1 

Beachten Sie, dass ich beide Zugabecbr=1 und useinbandfec=1 entfernen. Ich bin nicht sicher, dass das Löschen notwendig ist, aber es scheint, dass In-Band-FEC (Weiterleitung Fehlerkorrektur) Kompression Anpassung verursacht, die Sie auch vermeiden möchten.