AudioBuffer
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
Die AudioBuffer
-Schnittstelle repräsentiert ein kurzes Audio-Asset, das sich im Arbeitsspeicher befindet und entweder aus einer Audiodatei mit der Methode AudioContext.decodeAudioData()
oder aus Rohdaten mit AudioContext.createBuffer()
erstellt wurde. Sobald das Audio in einem AudioBuffer ist, kann es abgespielt werden, indem es in einen AudioBufferSourceNode
übergeben wird.
Objekte dieser Typen sind dafür ausgelegt, kleine Audioschnipsel zu halten, typischerweise weniger als 45 Sekunden. Für längere Sounds sind Objekte, die das MediaElementAudioSourceNode
implementieren, besser geeignet. Der Puffer enthält die Audiosignal-Wellenform, die als eine Reihe von Amplituden in folgendem Format kodiert ist: nicht-interleaved IEEE754 32-Bit linear PCM mit einem nominalen Bereich zwischen -1
und +1
, das heißt ein 32-Bit-Gleitkomma-Puffer, wobei jede Probe zwischen -1.0 und 1.0 liegt. Hat der AudioBuffer
mehrere Kanäle, werden diese in separaten Puffern gespeichert.
Konstruktor
AudioBuffer()
-
Erstellt und gibt eine neue
AudioBuffer
-Objektinstanz zurück.
Instanz-Eigenschaften
AudioBuffer.sampleRate
Nur lesbar-
Gibt einen Float-Wert zurück, der die Sample-Rate, in Samples pro Sekunde, der im Puffer gespeicherten PCM-Daten darstellt.
AudioBuffer.length
Nur lesbar-
Gibt einen Integer-Wert zurück, der die Länge, in Sample-Frames, der im Puffer gespeicherten PCM-Daten darstellt.
AudioBuffer.duration
Nur lesbar-
Gibt einen Double-Wert zurück, der die Dauer, in Sekunden, der im Puffer gespeicherten PCM-Daten darstellt.
AudioBuffer.numberOfChannels
Nur lesbar-
Gibt einen Integer-Wert zurück, der die Anzahl der diskreten Audiokanäle beschreibt, die durch die im Puffer gespeicherten PCM-Daten repräsentiert werden.
Instanz-Methoden
AudioBuffer.getChannelData()
-
Gibt ein
Float32Array
zurück, das die PCM-Daten enthält, die dem durch denchannel
-Parameter definierten Kanal zugeordnet sind (wobei0
den ersten Kanal darstellt). AudioBuffer.copyFromChannel()
-
Kopiert die Proben aus dem angegebenen Kanal des
AudioBuffer
in dasdestination
-Array. AudioBuffer.copyToChannel()
-
Kopiert die Proben in den angegebenen Kanal des
AudioBuffer
aus demsource
-Array.
Beispiel
Das folgende einfache Beispiel zeigt, wie ein AudioBuffer
erstellt und mit zufälligem weißem Rauschen gefüllt wird. Sie finden den vollständigen Quellcode in unserem webaudio-examples Repository; eine laufende Live-Version ist ebenfalls verfügbar.
const audioCtx = new AudioContext();
// Create an empty three-second stereo buffer at the sample rate of the AudioContext
const myArrayBuffer = audioCtx.createBuffer(
2,
audioCtx.sampleRate * 3,
audioCtx.sampleRate,
);
// Fill the buffer with white noise;
// just random values between -1.0 and 1.0
for (let channel = 0; channel < myArrayBuffer.numberOfChannels; channel++) {
// This gives us the actual array that contains the data
const nowBuffering = myArrayBuffer.getChannelData(channel);
for (let i = 0; i < myArrayBuffer.length; 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
const source = audioCtx.createBufferSource();
// set the buffer in the AudioBufferSourceNode
source.buffer = myArrayBuffer;
// connect the AudioBufferSourceNode to the
// destination so we can hear the sound
source.connect(audioCtx.destination);
// start the source playing
source.start();
Spezifikationen
Specification |
---|
Web Audio API # AudioBuffer |
Browser-Kompatibilität
BCD tables only load in the browser