gpt4 book ai didi

javascript - 更改 AudioContext 的采样率(getUserMedia)

转载 作者:行者123 更新时间:2023-12-02 06:17:49 29 4
gpt4 key购买 nike

我正在尝试通过 getUserMedia 录制 48000Hz 的录音。但没有运气。返回的音频MediaStream返回44100Hz。我怎样才能将其设置为 48000Hz?

以下是我的代码片段:

var startUsermedia = this.startUsermedia;

navigator.getUserMedia({
audio: true,
//sampleRate: 48000
}, startUsermedia, function (e) {
console.log('No live audio input: ' + e);
});

startUsermedia 函数:

startUsermedia: function (stream) {
var input = audio_context.createMediaStreamSource(stream);
console.log('Media stream created.');
// Uncomment if you want the audio to feedback directly
//input.connect(audio_context.destination);
//__log('Input connected to audio context destination.');

recorder = new Recorder(input);
console.log('Recorder initialised.');
},

我尝试更改 AudioContext 的属性sampleRate,但没有成功。

如何将采样率更改为 48000Hz?

编辑:我们现在也可以使用可以以 48000Hz 录制和导出 wav 文件的闪存解决方案

最佳答案

据我所知,无法更改音频上下文中的采样率。采样率通常是您的录音设备的采样率,并将保持不变。所以你不能写这样的东西:

var input = audio_context.createMediaStreamSource(stream);
var resampler = new Resampler(44100, 48000);
input.connect(resampler);
resampler.connect(audio_context.destination);

但是,如果您想获取音频流,对其进行重新采样,然后将其发送到后端(或在 Web Audio API 之外对其进行其他操作),则可以使用外部采样率转换器(例如 https://github.com/taisel/XAudioJS/blob/master/resampler.js )。

   var resampler = new Resampler(44100, 48000, 1, 2229);

function startUsermedia(stream) {
var input = audio_context.createMediaStreamSource(stream);
console.log('Media stream created.');


recorder = audio_context.createScriptProcessor(2048);
recorder.onaudioprocess = recorderProcess;
recorder.connect(audio_context.destination);
}

function recorderProcess(e) {
var buffer = e.inputBuffer.getChannelData(0);
var resampled = resampler.resampler(buffer);
//--> do sth with the resampled data for instance send to server
}

关于javascript - 更改 AudioContext 的采样率(getUserMedia),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30031561/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com