--- 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}} |