У меня есть приложение webrtc, которое работает на Android-телефоне (для медсестер) и планшете (для пациентов). В основном у меня есть система удаленного помощника, благодаря которой медсестры могут звонить и слышать (только аудиопоток), что происходит на стороне пациента. Поскольку планшеты установлены на стене, а кровать пациента обычно немного на расстоянии. Я хочу увеличить усиление микрофона либо в сторону webrtc/android, чтобы я мог слышать даже низкий уровень звука. Я пытаюсь найти ключ к Google, но не могу найти что-либо интересное. Может ли кто-нибудь дать мне подсказку, как увеличить чувствительность микрофона?Как увеличить усиление микрофона в webrtc
------------------------ Пример кода -------------------- -
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;
};
в отлаживать я нашел разницу в предыдущей и новой звуковой дорожке: Это оригинальный звуковой трек, который я получаю от localstream:
enabled: true
id: "8e4363c2-f1c8-44ec-9bed-f3414f3b943a"
kind: "audio"
label: "Default"
muted: false
onended: null
onmute: null
onunmute: null
readyState: "live"
Это новый аудио трек, который получает DST .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"
Есть ли идентификатор и этикетка для воспроизведения потока?
Невозможно управлять фактическим аппаратным микрофоном, но вы можете увеличить коэффициент усиления входного сигнала путем [обработки его в webaudio] (http://stackoverflow.com/a/35000726/918910). Некоторые браузеры также имеют [autoGainControl] (http://stackoverflow.com/a/37332145/918910), которые вы можете попробовать включить. Единственный трюк мог бы вернуть треки в потоки в Chrome, который не поддерживает отслеживание манипуляций AFAIK. – jib
Можно ли использовать что-то другое вместо использования MediaStream? в основном я пытаюсь использовать это на мобильном телефоне через плагин corodova, а версия chrome в настоящее время показывает 44, которые не поддерживают MediaStream. Так что получение Uncaught ReferenceError: MediaStream не определяется онлайн var src = ctx.createMediaStreamSource (новый MediaStream ([audioTrack])); –
Вы только аудио, поэтому я думаю, что вы можете пропустить шаг разделения и сдачи назад. Попробуйте 'ctx.createMediaStreamSource (поток)', а затем 'ctx.createMediaStreamDestination()' возвращает медиапоток, который вы можете использовать напрямую, я бы подумал. – jib