微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我试图通过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的propertyRate属性,但没有运气.

我如何将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
    }

原文地址:https://www.jb51.cc/js/155210.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐