我正在努力播放这个 WAV 文件,它在 VLC 中播放(根据它是一个Mono
,IMA WAV APDCM Audio (ms)
采样的文件24000Hz
)16 bits per sample
。
我怀疑 WAV 文件本身有问题,因为当我尝试通过直接嵌入它来播放它时, <audio>
播放按钮处于非活动状态……当我尝试使用 以编程方式播放它时new Audio()
,我收到错误Failed to load because no supported source was found.
这是我尝试过的最简单的示例,它会产生一些声音……我尝试过的其他尝试尝试AudioContext.decodeAudioData
在加载音频时使用所有扼流圈,抛出Unable to decode audio data
.
这个例子产生了一些可以识别的声音,但我显然做错了什么,因为它太刺耳了——我的理解是,它的值AudioBuffer
需要介于 之间,而这些则不需要。但我不知道如何规范化它们,因为许多值都在.Float32Array
[-1,1]
10e32
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
</style>
</head>
<body>
<script>
var context = new AudioContext();
function loadSound(url) {
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.responseType = "arraybuffer";
request.onload = function() {
data = new Uint8Array(request.response);
var buffer = context.createBuffer(1, data.length, 24000);
var channelData = buffer.getChannelData(0);
for (var i = 0; i < data.length; i++) {
channelData[i] = data[i];
}
var source = context.createBufferSource();
source.buffer = buffer;
source.connect(context.destination);
source.start(0);
}
request.send();
}
loadSound('./test.wav');
</script>
</body>
</html>
任何帮助,将不胜感激; 谢谢你!