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

标签 javascript getusermedia sample-rate audiocontext

我正在尝试通过 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/

相关文章:

javascript - 在谷歌图表 hAxis 中显示月份

javascript - jQuery UI 自动完成 - _renderItem 在第一次粘贴时不会触发

javascript - 使用 getUserMedia 从多个网络摄像头捕获视频

javascript - 无法访问 webrtc 上的后置摄像头 [chrome :54]

javascript - 自定义 html 生成器中的逻辑流缺陷

javascript - 调整字体到窗口

javascript - navigator.getUserMedia 允许一个约束,另一个不允许,关闭浏览器提示时调用成功回调

audio - 如何将采样率频率除以10个频段以进行均衡

c - 产生正弦波会产生噪音

java - 在 44.1 kHz 接收器上播放 48 kHz PCM