зеркало из https://github.com/mozilla/gecko-dev.git
45 строки
823 B
HTML
45 строки
823 B
HTML
<!DOCTYPE html>
|
|
<script>
|
|
var ac = new AudioContext();
|
|
var runningPromise = new Promise(resolve => {
|
|
ac.onstatechange = event => {
|
|
if (ac.state == "running") {
|
|
resolve();
|
|
}
|
|
};
|
|
});
|
|
fetch("audio.ogg").then(response => {
|
|
return response.arrayBuffer();
|
|
}).then(ab => {
|
|
return ac.decodeAudioData(ab);
|
|
}).then(ab => {
|
|
var src = ac.createBufferSource();
|
|
src.buffer = ab;
|
|
src.loop = true;
|
|
src.loopStart = 0;
|
|
src.loopEnd = ab.duration;
|
|
src.start();
|
|
src.connect(ac.destination);
|
|
});
|
|
|
|
var suspendPromise;
|
|
function suspendAC() {
|
|
runningPromise.then(() => {
|
|
suspendPromise = ac.suspend();
|
|
});
|
|
}
|
|
|
|
var resumePromise;
|
|
function resumeAC() {
|
|
suspendPromise.then(() => {
|
|
resumePromise = ac.resume();
|
|
});
|
|
}
|
|
|
|
function closeAC() {
|
|
resumePromise.then(() => {
|
|
ac.close();
|
|
});
|
|
}
|
|
</script>
|