How to get the sample rate from a mediaDevices.getUserMedia stream

Firefox is limited in its audio resampling ability for audio mediastreams. If the input media stream's sample rate is not the same as the AudioCotext's, then it complains :

DOMException: AudioContext.createMediaStreamSource: Connecting AudioNodes from AudioContexts with different sample-rate is currently not supported.

For example if we get an audio stream like so :

navigator.mediaDevices.getUserMedia(constraints).then(stream => {
  let context = new (window.AudioContext || window.webkitAudioContext)({sampleRate : 48000});  
  let audioInput = this.context.createMediaStreamSource(stream);

Firefox will complain about mismatching sample rates - if they are different between the audio context and the hardware device's settings in the audio subsystem.

I can't find a way to get the sample rate from the audio track in the stream. I've tried :

let tracks = stream.getAudioTracks();
let settings = tracks[0].getSettings();
let constraints = tracks[0].getConstraints();

But none of these objects have the streams's sampleRate in them.

Is there another way to enquire an audio track's/stream's sample rate ?

Read more here:

Content Attribution

This content was originally published by Matt at Recent Questions - Stack Overflow, and is syndicated here via their RSS feed. You can read the original post over there.

%d bloggers like this: