AudioBufferSourceNode
接口的 buffer
属性提供了重复播放音频的能力,该音频使用 AudioBuffer
作为声音文件的来源。
如果 buffer
属性的值为 null
, 节点会自动生成一个单声道的无声文件(所有采样均为0)。
语法
AudioBufferSourceNode.buffer = soundBuffer;
返回值
AudioBuffer
,包含了节点将要播放的声音数据。
示例
完整的示例请查看 this code running live,或 view the source。
var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate); button.onclick = function() { // Fill the buffer with white noise; //just random values between -1.0 and 1.0 for (var channel = 0; channel < channels; channel++) { // This gives us the actual ArrayBuffer that contains the data var nowBuffering = myArrayBuffer.getChannelData(channel); for (var i = 0; i < frameCount; i++) { // Math.random() is in [0; 1.0] // audio needs to be in [-1.0; 1.0] nowBuffering[i] = Math.random() * 2 - 1; } } // Get an AudioBufferSourceNode. // This is the AudioNode to use when we want to play an AudioBuffer var source = audioCtx.createBufferSource(); // set the buffer in the AudioBufferSourceNode source.buffer = myArrayBuffer;
规范
Specification | Status | Comment |
---|---|---|
Web Audio API buffer |
Working Draft | Initial definition |
浏览器兼容性
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | 14 | 12 | 251 | No | 15 | 6 |
Feature | Android webview | Chrome for Android | Edge mobile | Firefox for Android | Opera Android | iOS Safari | Samsung Internet |
---|---|---|---|---|---|---|---|
Basic support | Yes | 14 | Yes | 261 | 15 | ? | Yes |
1. Firefox currently handles the value null
incorrectly. Instead of producing a node that generates a single channel of silence, the node becomes unusable and will be ignored if you attempt to connect it to anything.