Am able to play sound with javascript through the following,
var snd = new Audio('sound.wav'); snd.play();
This plays the required sound but sometimes it loads slowly or might not even load at all so i encoded the sound in base 64 and tried to play it this way.
var splash = { prefix: "data:audio/wav;base64,", sound: [ "*base64 string here*" ] }; var snd = new Audio(splash); snd.play();
but the sound does not play, is there a way around it ?
That doesn't look like the correct way to use the Audio constructor for HTMLAudioElement / <audio>
.
Slight adjustment
var snd = new Audio("data:audio/wav;base64," + base64string); snd.play();
If it works in console but not in script, it may be getting garbage collected, in which case scope it so it will stay
var Sound = (function () { var df = document.createDocumentFragment(); return function Sound(src) { var snd = new Audio(src); df.appendChild(snd); // keep in fragment until finished playing snd.addEventListener('ended', function () {df.removeChild(snd);}); snd.play(); return snd; } }()); // then do it var snd = Sound("data:audio/wav;base64," + base64string);
var snd = new Audio("data:audio/x-wav;base64, <URI data>"); snd.play();
There is no need to declare splash as an object variable.
Base64 conversion can be done easily from: https://dopiaza.org/tools/datauri/index.php
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With