--- title: AudioBuffer slug: Web/API/AudioBuffer translation_of: Web/API/AudioBuffer ---
{{APIRef("Web Audio API")}}
Interfejs AudioBuffer przedstawia krótki zasób dźwiękowy znajdujący się w pamięci, stworzony z pliku dźwiękowego za pomocą metody {{ domxref("AudioContext.decodeAudioData()") }} lub z surowych danych przy użyciu {{ domxref("AudioContext.createBuffer()") }}. Dane audio umieszczone w AudioBuffer mogą być następnie odtwarzane przez przekazanie ich do {{ domxref("AudioBufferSourceNode") }}.
Obiekty tego typu są przeznaczone do przechowywania drobnych fragmentów dźwiękowych, zwykle mniej niż 45s. W przypadku dłuższych dźwięków, obiekty implementujące {{domxref("MediaElementAudioSourceNode")}} są bardziej odpowiednie. Bufor zawiera dane w następującym formacie: IEEE754 32 -bitowy liniowy PCM bez przeplotu o nominalnym zakresie między -1 i +1 , czyli 32-bitowy zmiennoprzecinkowy bufor z próbkami o znormalizowanych wartościach między -1.0 a 1.0. Jeśli {{domxref("AudioBuffer")}} ma wiele kanałów, są one przechowywane w osobnym buforze.
float reprezentującą częstotliwość próbkowania danych PCM przechowywanych w buforze wyrażoną w próbkach na sekundę.int reprezentującą wielkość danych PCM przechowywanych w buforze wyrażoną jako liczba okien próbek.double reprezentującą czas trwania danych PCM zapisanych w buforze wyrażoną w sekundach. int reprezentującą liczbę pojedynczych kanałów audio opisanych przez dane PCM zapisanych w buforze.channel (0 reprezentuje pierwszy kanał).AudioBuffer do danej tablicy.kanału w AudioBuffer.Następujący przykład kodu pokazuje jak stworzyć AudioBuffer i wypełnić go białym szumem. Pełną wersję kodu można znależć w naszym repozytorium audio-buffer demo; jest dostępna także uruchomiona na żywo wersja running live version.
// Stereo
var channels = 2;
// Tworzenie pustego, dwusekundowego buffera stereo
// na wskaźniku audio z AudioContext
var frameCount = audioCtx.sampleRate * 2.0;
var myArrayBuffer = audioCtx.createBuffer(channels, frameCount, audioCtx.sampleRate);
button.onclick = function() {
// Wypełnienie buffera białym szumem;
// Wartość losowa pomiędzy -1.0 a 1.0
for (var channel = 0; channel < channels; channel++) {
// To daje nam aktualną tablice zawierającą dane
var nowBuffering = myArrayBuffer.getChannelData(channel);
for (var i = 0; i < frameCount; i++) {
// Math.random() znajduje się w przedziale [0; 1.0]
// audio musi znajdować się w [-1.0; 1.0]
nowBuffering[i] = Math.random() * 2 - 1;
}
}
// Dostarczenie AudioBufferSourceNode.
// To jest AudioNode dedykowane do używania wtedy, kiedy chcemy odtworzyć dany AudioBuffer
var source = audioCtx.createBufferSource();
// Określanie buffera w AudioBufferSourceNode
source.buffer = myArrayBuffer;
// Podłączanie AudioBufferSourceNode do
// destynacji, dzięki czemu możemy usłyszeć dźwięk
source.connect(audioCtx.destination);
// start odtwarzania źródła
source.start();
}
| Specyfikacja | Status | Komentarz |
|---|---|---|
| {{SpecName('Web Audio API', '#the-audiobuffer-interface', 'AudioBuffer')}} | {{Spec2('Web Audio API')}} | Definicja wstępna. |
| Cecha | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Wsparcie podstawowe | 14 {{property_prefix("webkit")}} | {{CompatGeckoDesktop(25)}} | {{CompatNo}} | 15 {{property_prefix("webkit")}} 22 |
6 {{property_prefix("webkit")}} |
copyFromChannel() and copyToChannel() |
{{CompatUnknown}} | {{CompatGeckoDesktop(27)}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatNo}} |
| Cecha | Android | Chrome | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|---|
| Wsparcie podstawowe | {{CompatNo}} | 28 {{property_prefix("webkit")}} | {{CompatGeckoMobile(25)}} | 1.2 | {{CompatNo}} | {{CompatNo}} | 6 {{property_prefix("webkit")}} |
copyFromChannel() and copyToChannel() |
{{CompatNo}} | {{CompatUnknown}} | {{CompatGeckoMobile(27)}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |