Wie kann die MediaStream-Lautstärke im JavaScript AudioRecorder beibehalten werden?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie kann die MediaStream-Lautstärke im JavaScript AudioRecorder beibehalten werden?

by Guest » 14 Jan 2025, 12:24

Ich verwende die MediaRecorder-API, um zwei Medienströme aufzuzeichnen:
  • Die Mikrofoneingabe des Benutzers, erhalten auf folgende Weise:

Code: Select all

const stream = await navigator.mediaDevices.getUserMedia({
audio: true
});
  • Ein Echo der Eingabe, erstellt auf folgende Weise:

Code: Select all

const audioContext = new (window.AudioContext || window.webkitAudioContext)();
source = audioContext.createMediaStreamSource(stream);

delay = audioContext.createDelay(2);
delay.delayTime.value =  ms / 1000;

gain = audioContext.createGain();
gain.gain.value = parseFloat(1)

source.connect(delay); // delay is set elsewhere by the user
delay.connect(gain); // gain is set elsewhere by the user
gain.connect(audioContext.destination);

const outputStream = audioContext.createMediaStreamDestination();
delay.connect(outputStream);

// ECHO STREAM OBJECT FOR MEDIA RECORDER
echoStream = outputStream.stream;
Das Echo selbst funktioniert gut, Verzögerung und Verstärkung werden wie erwartet angewendet (weniger Verstärkung → Echo ist leiser und umgekehrt).
Aber Wenn ich die Streams mit MediaRecorder aufzeichne, haben sie alle die gleiche Lautstärke. Ich muss die Lautstärke des Echos genau so beibehalten, wie der Benutzer es über seine Lautsprecher hört. Wie kann dies erreicht werden? Ist das mit der MediaRecorder-API überhaupt möglich?

Top