2015-10-21 17:24:38 +00:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
|
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
|
|
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0">-->
|
|
|
|
<meta name="viewport" content="width=320">
|
|
|
|
<meta name="description" content="ympd - fast and lightweight MPD webclient">
|
|
|
|
<meta name="author" content="andy@ndyk.de">
|
|
|
|
|
|
|
|
<title>ympd player</title>
|
|
|
|
|
|
|
|
<!-- Bootstrap core CSS -->
|
2017-07-31 09:56:02 +00:00
|
|
|
<link href="css/bootstrap.css" rel="stylesheet">
|
|
|
|
<link href="css/bootstrap-theme.css" rel="stylesheet">
|
2015-10-21 17:24:38 +00:00
|
|
|
|
|
|
|
<!-- Custom styles for this template -->
|
2017-07-31 09:56:02 +00:00
|
|
|
<link href="css/mpd.css" rel="stylesheet">
|
2015-10-21 17:24:38 +00:00
|
|
|
<link href="assets/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon">
|
2015-12-08 15:42:03 +00:00
|
|
|
<script src="js/jquery-1.10.2.min.js"></script>
|
|
|
|
<script src="js/jquery.cookie.js"></script>
|
|
|
|
<script src="js/bootstrap.min.js"></script>
|
|
|
|
<script src="js/bootstrap-notify.js"></script>
|
2015-10-21 17:24:38 +00:00
|
|
|
<script type="text/javascript">
|
|
|
|
function clickLocalPlay() {
|
|
|
|
var player = document.getElementById('player');
|
|
|
|
$("#localplay-icon").removeClass("glyphicon-play").removeClass("glyphicon-pause");
|
|
|
|
|
|
|
|
|
|
|
|
if ( player.paused ) {
|
|
|
|
var mpdstream = $.cookie("mpdstream");
|
|
|
|
player.src = mpdstream;
|
|
|
|
console.log("playing mpd stream: " + player.src);
|
|
|
|
player.load();
|
|
|
|
player.play();
|
|
|
|
$("#localplay-icon").addClass("glyphicon-pause");
|
|
|
|
} else {
|
|
|
|
player.pause();
|
|
|
|
player.src='';
|
|
|
|
player.removeAttribute("src");
|
|
|
|
$("#localplay-icon").addClass("glyphicon-play");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-12-08 15:42:03 +00:00
|
|
|
$(document).ready(function(){
|
|
|
|
document.getElementById('player').addEventListener('stalled', function() {
|
|
|
|
if ( !document.getElementById('player').paused ) {
|
|
|
|
this.pause();
|
|
|
|
clickLocalPlay();
|
|
|
|
$('.top-right').notify({
|
|
|
|
message:{text:"music stream stalled - trying to recover..."},
|
|
|
|
type: "danger",
|
|
|
|
fadeOut: { enabled: true, delay: 1000 },
|
|
|
|
}).show();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
document.getElementById('player').addEventListener('pause', function() {
|
|
|
|
this.src='';
|
|
|
|
this.removeAttribute("src");
|
|
|
|
$("#localplay-icon").removeClass("glyphicon-pause").addClass("glyphicon-play");
|
|
|
|
});
|
|
|
|
|
|
|
|
document.getElementById('player').addEventListener('error', function failed(e) {
|
|
|
|
this.pause();
|
|
|
|
switch (e.target.error.code) {
|
|
|
|
case e.target.error.MEDIA_ERR_ABORTED:
|
|
|
|
$('.top-right').notify({
|
|
|
|
message:{text:"Audio playback aborted by user."},
|
|
|
|
type: "info",
|
|
|
|
fadeOut: { enabled: true, delay: 1000 },
|
|
|
|
}).show();
|
|
|
|
break;
|
|
|
|
case e.target.error.MEDIA_ERR_NETWORK:
|
|
|
|
$('.top-right').notify({
|
|
|
|
message:{text:"Network error while playing audio."},
|
|
|
|
type: "danger",
|
|
|
|
fadeOut: { enabled: true, delay: 1000 },
|
|
|
|
}).show();
|
|
|
|
break;
|
|
|
|
case e.target.error.MEDIA_ERR_DECODE:
|
|
|
|
$('.top-right').notify({
|
|
|
|
message:{text:"Audio playback aborted. Did you unplug your headphones?"},
|
|
|
|
type: "danger",
|
|
|
|
fadeOut: { enabled: true, delay: 1000 },
|
|
|
|
}).show();
|
|
|
|
break;
|
|
|
|
case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:
|
|
|
|
$('.top-right').notify({
|
|
|
|
message:{text:"Error while loading audio (server, network or format error)."},
|
|
|
|
type: "danger",
|
|
|
|
fadeOut: { enabled: true, delay: 1000 },
|
|
|
|
}).show();
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
$('.top-right').notify({
|
|
|
|
message:{text:"Unknown error while playing audio."},
|
|
|
|
type: "danger",
|
|
|
|
fadeOut: { enabled: true, delay: 1000 },
|
|
|
|
}).show();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}, true);
|
|
|
|
});
|
2015-10-21 17:24:38 +00:00
|
|
|
</script>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
|
|
|
<div class="container">
|
|
|
|
<a class="navbar-brand" href="/" target="_blank"><span class="glyphicon glyphicon-play-circle"></span> ympd</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="container starter-template">
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-md-10 col-xs-12">
|
|
|
|
<audio id="player" preload="none"></audio>
|
|
|
|
<button type="button" class="btn btn-default btn-lg center-block" onclick="clickLocalPlay()">
|
|
|
|
<span id="localplay-icon" class="glyphicon glyphicon-play"></span>
|
|
|
|
</button>
|
2015-12-08 15:42:03 +00:00
|
|
|
<div class="notifications top-right"></div>
|
2015-10-21 17:24:38 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|