Wystąpił błąd skryptu na tej stronie. Edytorzy witryny zostali o tym powiadomieni. W tym czasie można poniżej zobaczyć część jej treści.
To tłumaczenie jest niekompletne. Pomóż przetłumaczyć ten artykuł z języka angielskiego.
{{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ż 45 s . 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.
Własności
- {{domxref("AudioBuffer.sampleRate")}} {{readonlyInline}}
- Zwraca wartość typu float reprezentującą częstotliwość próbkowania danych PCM przechowywanych w buforze wyrażoną w próbkach na sekundę.
- {{domxref("AudioBuffer.length")}} {{readonlyInline}}
- Zwraca wartość typu int reprezentującą wielkość danych PCM przechowywanych w buforze wyrażoną jako liczba okien próbek.
- {{domxref("AudioBuffer.duration")}} {{readonlyInline}}
- Zwraca wartość typu double reprezentującą czas trwania danych PCM zapisanych w buforze wyrażoną w sekundach.
- {{domxref("AudioBuffer.numberOfChannels")}} {{readonlyInline}}
- Zwraca wartość typu int reprezentującą liczbę pojedynczych kanałów audio opisanych przez dane PCM zapisanych w buforze.
Methods
- {{domxref("AudioBuffer.getChannelData()")}}
- Zwraca tablicę {{jsxref("Float32Array")}} zawierającą dane PCM powiązane z kanałem audio określonym jako parametr
channel
(0
reprezentuje pierwszy kanał). - {{domxref("AudioBuffer.copyFromChannel()")}}
- Kopiuje próbki z danego kanału w
AudioBuffer
do danej tablicy. - {{domxref("AudioBuffer.copyToChannel()")}}
- Kopiuje próbki z danej tablicy do danego
kanału w AudioBuffer
.
Przykład
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; // Create an empty two second stereo buffer at the // sample rate of the AudioContext var frameCount = audioCtx.sampleRate * 2.0; var myArrayBuffer = audioCtx.createBuffer(channels, 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 array 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; // connect the AudioBufferSourceNode to the // destination so we can hear the sound source.connect(audioCtx.destination); // start the source playing source.start(); }
Specyfikacje
Specification | Status | Comment |
---|---|---|
{{SpecName('Web Audio API', '#the-audiobuffer-interface', 'AudioBuffer')}} | {{Spec2('Web Audio API')}} | Initial definition. |
Kompatybilność z przeglądarkami
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | 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}} |
Feature | Android | Chrome | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | {{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}} |