如何从 mediaDevices.getUserMedia 流获取采样率

问题描述 投票:0回答:1

Firefox 对音频媒体流的音频重采样能力有限。如果输入媒体流的采样率与 AudioCotext 的采样率不同,那么它会抱怨:

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

例如,如果我们得到这样的音频流:

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

Firefox 会抱怨采样率不匹配 - 如果音频上下文和音频子系统中硬件设备的设置不同。

我找不到从流中的音轨获取采样率的方法。我试过了:

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

但是这些对象中都没有流的sampleRate。

还有其他方法来查询音轨/流的采样率吗?

firefox web-audio-api mediastreamsource
1个回答
0
投票

似乎有效的方法是将音频流从 getUserMedia 连接到默认的 AudioContext,没有任何限制(不指定采样率)。连接流后,您可以查看

AudioContext.sampleRate
,它会告诉您来自 getUserMedia() 的流的采样率。

© www.soinside.com 2019 - 2024. All rights reserved.