Files
buffer/client/src/audio.js
T

65 lines
1.5 KiB
JavaScript

// Copyright (c) 2018 Alexandre Storelli
var audioElement = document.createElement('audio');
audioElement.addEventListener("error", function(err) { // when a player error happens, blacklist the stream for 15 seconds
console.log("playing error: ")
console.log(err);
});
audioElement.addEventListener("play", function() {
console.log("playback started");
});
/*var play = function(url) {
stop();
console.log("play " + url);
audioElement.src = url;
audioElement.play();
}
var stop = function() {
audioElement.pause();
audioElement.currentTime = 0;
try {
audioElement.src = 'data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAABAAEAVFYAAFRWAAABAAgAZGF0YQAAAAA=';
audioElement.play();
} catch(e) {
// no-op
}
}*/
var play = function(url, callback) { // https://developers.google.com/web/updates/2017/06/play-request-was-interrupted
console.log("play " + url);
audioElement.src = url;
var playPromise = audioElement.play();
if (playPromise !== undefined) {
playPromise.then(_ => {
if (callback) callback(null);
})
.catch(error => {
if (callback) callback(error);
});
}
}
var stop = function() {
audioElement.src = "";
audioElement.load();
}
var setVolume = function(volume) {
audioElement.volume = volume;
}
exports.play = play;
exports.stop = stop;
exports.setVolume = setVolume;
/*exports.getPlayerTime = function(startDate) {
if (!startDate) {
console.log("getPlayerTime: invalid startdate=" + startDate);
return 0;
}
return new Date(+new Date(startDate) + Math.round(1000 * audioElement.currentTime)).toISOString();
}*/