f.l*_*nzo 22 javascript sample-rate getusermedia 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);
});
Run Code Online (Sandbox Code Playgroud)
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.');
},
Run Code Online (Sandbox Code Playgroud)
我尝试更改AudioContext的属性sampleRate,但没有运气.
如何将sampleRate更改为48000Hz?
编辑:我们现在也可以使用闪存解决方案,可以记录和导出48000Hz的wav文件
bas*_*kum 15
据我所知,无法在音频上下文中更改采样率.采样率通常是您的录音设备的采样率,并将保持这种方式.所以你将无法写出这样的东西:
var input = audio_context.createMediaStreamSource(stream);
var resampler = new Resampler(44100, 48000);
input.connect(resampler);
resampler.connect(audio_context.destination);
Run Code Online (Sandbox Code Playgroud)
但是,如果您想要获取音频流,重新取样然后将其发送到后端(或者在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
}
Run Code Online (Sandbox Code Playgroud)
似乎有一个关于无法设置采样率的公开错误:
https://github.com/WebAudio/web-audio-api/issues/300
还有一个Chrome问题:
https://bugs.chromium.org/p/chromium/issues/detail?id=432248
我检查了最新的Chromium代码,其中没有任何内容可以让您设置采样率。
编辑:似乎它已在Chrome中实现,但目前已损坏-请参阅Chromium问题中的评论。
小智 5
audioContext = new AudioContext({sampleRate: 48000})
Run Code Online (Sandbox Code Playgroud)
只需在创建 AudioContext 对象时设置采样率,这对我有用
注意:这个答案已经过时了。
你不能。AudioContext 的采样率由浏览器/设备设置,您无法更改它。事实上,您会发现您的机器上的 44.1kHz 可能是我的机器上的 48kHz。它随操作系统默认选择的内容而变化。
另请记住,并非所有硬件都能够支持所有采样率。
| 归档时间: |
|
| 查看次数: |
16548 次 |
| 最近记录: |