私はアンドロイド携帯電話(看護師)とタブレット(患者用)で動作するwebrtcアプリケーションを持っています。基本的には、私は看護師が患者側で何が起きているのかを聞いて聞くことができる(オーディオストリームのみ)リモートアシスタントシステムを実装しています。タブレットは壁に取り付けられ、患者のベッドは通常は少し離れているので、 webrtc/android側のマイクゲインを上げて低音域の音を聞きたい。私はGoogleの手掛かりを見つけようとしますが、興味深いものは見つけられません。誰かが私にどのように私はマイクの感度を高めるだろうヒントを与えることができますか?webrtcのマイクゲインを上げる方法
------------------------サンプルコード--------------------
enabled: true
id: "8e4363c2-f1c8-44ec-9bed-f3414f3b943a"
kind: "audio"
label: "Default"
muted: false
onended: null
onmute: null
onunmute: null
readyState: "live"
これは、DSTを取得し、新しいオーディオトラックである:これは私がlocalstreamから取得オリジナルのオーディオトラックである : - 私は以前と新しいオーディオトラックの違いを発見したデバッグで
function getLocalStream(successCallback) {
if (localStream && successCallback) {
successCallback(localStream);
return;
}
navigator.getUserMedia(streamOptions, function (str) {
var stream= modifyGain(str);
uiHandler("peer.call.localstream", {payload: stream});
localStream = stream;
if (successCallback) {
successCallback(stream);
}
}, function (err) {
uiHandler("status.error", {payload: "Failed to access local camera", error: err});
});
}
function modifyGain (stream){
var audioTrack = stream.getAudioTracks()[0];
var ctx = new AudioContext();
var src = ctx.createMediaStreamSource(stream);
var dst = ctx.createMediaStreamDestination();
var gainNode = ctx.createGain();
gainNode.gain.value = 50;
[src, gainNode, dst].reduce(function(a, b) { return a && a.connect(b) });
stream.removeTrack(audioTrack);
var newAudioTrack = dst.stream.getAudioTracks()[0];
stream.addTrack(newAudioTrack);
return stream;
};
.stream.getAudioTracks()[0];
enabled: true
id: "cc0c4293-a606-407e-9adb-4caddaa32583"
kind: "audio"
label: "MediaStreamAudioDestinationNode"
muted: false
onended: null
onmute: null
onunmute: null
readyState: "live"
ストリームを再生するIDとラベルは重要ですか?
実際のハードウェアマイクを制御できるのであればダンノーですが、[webaudioで処理する](http://stackoverflow.com/a/35000726/918910)で入力信号のゲインを上げることができます。一部のブラウザでは、[autoGainControl](http://stackoverflow.com/a/37332145/918910)もオンにすることができます。唯一のトリックは、トラック操作をサポートしていないChromeのストリームにAFAIKを戻すことです。 – jib
MediaStreamを使用する代わりに何か他のものを使用できますか?基本的に私はcorodovaプラグインを介してモバイルでこれを使用しようとしています、そしてchromeバージョンは現在MediaStreamをサポートしていない44を示しています。 Uncaught ReferenceErrorを取得すると、MediaStreamがオンラインで定義されていません。var src = ctx.createMediaStreamSource(new MediaStream([audioTrack])); –
あなたはオーディオのみですので、分離と置き換えの手順を省略することができます。 'ctx.createMediaStreamSource(stream)'を試してみて、それで 'ctx.createMediaStreamDestination()'はすでに使用しているメディアストリームを返します。 – jib