%PDF- %PDF-
Direktori : /proc/309157/root/home/waritko/subsonic/ROOT/WEB-INF/jsp/ |
Current File : //proc/309157/root/home/waritko/subsonic/ROOT/WEB-INF/jsp/videoPlayer.jsp |
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="iso-8859-1" %> <html> <head> <%@ include file="head.jsp" %> <%@ include file="jquery.jsp" %> <link type="text/css" rel="stylesheet" href="<c:url value="/script/flowplayer-6.0.5/skin/functional.css"/>"> <link type="text/css" rel="stylesheet" href="<c:url value="/style/videoPlayer.css"/>"> <script type="text/javascript" src="<c:url value="/dwr/engine.js"/>"></script> <script type="text/javascript" src="<c:url value="/dwr/interface/starService.js"/>"></script> <script type="text/javascript" src="<c:url value="/dwr/interface/playQueueService.js"/>"></script> <script type="text/javascript" src="<c:url value="/dwr/interface/multiService.js"/>"></script> <script type="text/javascript" src="<c:url value="/script/flowplayer-6.0.5/flowplayer.min.js"/>"></script> <script type="text/javascript" src="<c:url value="/script/flowplayer-6.0.5/flowplayer.hlsjs.min.js"/>"></script> <script type="text/javascript" src="<c:url value="/script/flowplayer-6.0.5/flowplayer.thumbnails.min.js"/>"></script> <script type="text/javascript" src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script> <%@ include file="videoPlayerCast.jsp" %> <script type="text/javascript" language="javascript"> function toggleStar(mediaFileId, element) { starService.star(mediaFileId, !$(element).hasClass("fa-star")); $(element).toggleClass("fa-star fa-star-o starred"); } function keyboardShortcut(action) { if (action == "togglePlayPause") { if ($("#play").is(":visible")) { $("#play").click(); } else if ($("#pause").is(":visible")) { $("#pause").click(); } } else if (action == "volumeDown") { var volume = parseInt($("#volume-slider").slider("option", "value")); $("#volume-slider").slider("option", "value", Math.max(0, volume - 5)); castPlayer.setVolume(false); } else if (action == "volumeUp") { var volume = parseInt($("#volume-slider").slider("option", "value")); $("#volume-slider").slider("option", "value", Math.min(100, volume + 5)); castPlayer.setVolume(false); } else if (action == "seekForward" && $("#pause").is(":visible")) { var position = parseInt($("#progress-slider").slider("option", "value")); var duration = parseInt($("#progress-slider").slider("option", "max")); $("#progress-slider").slider("option", "value", Math.min(duration, position + duration / 100)); castPlayer.seekMedia(); } else if (action == "seekBackward" && $("#pause").is(":visible")) { var position = parseInt($("#progress-slider").slider("option", "value")); var duration = parseInt($("#progress-slider").slider("option", "max")); $("#progress-slider").slider("option", "value", Math.max(0, position - duration / 100)); castPlayer.seekMedia(); } else if (action == "star") { $("#star").click(); } } </script> </head> <body class="mainframe bgcolor1" > <c:set var="licenseInfo" value="${model.licenseInfo}"/> <%@ include file="licenseNotice.jsp" %> <c:if test="${licenseInfo.licenseOrTrialValid}"> <div> <div id="overlay"> <i class="material-icons" style="font-size:30px">cast_connected</i> <span><fmt:message key="videoPlayer.chromecast"/></span> </div> <div id="localPlayer" style="width:100%; height:calc(100vh - 125px)"></div> <div id="media-control" class="bgcolor2"> <div class="ellipsis" style="flex-grow:1"> <div id="progress-slider"></div> <div class="ellipsis" style="display:flex; align-items:center; margin-left:10px"> <div class="ellipsis" style="flex:1"> <div id="title" class="ellipsis"> <i id="star" class="fa ${not empty model.video.starredDate ? 'fa-star starred' : 'fa-star-o'} fa-lg clickable" onclick="toggleStar(${model.video.id}, this)" style="padding-right:0.25em"></i> ${fn:escapeXml(model.video.title)} </div> <c:if test="${not model.windowed}"> <div class="detail ellipsis" style="margin-top:0.4em"> <a href="artists.view?musicFolderId=${model.musicFolder.id}">${fn:escapeXml(model.musicFolder.name)}</a> <c:forEach items="${model.ancestors}" var="ancestor"> • <a href="main.view?id=${ancestor.id}">${fn:escapeXml(ancestor.name)}</a> </c:forEach> </div> </c:if> </div> <i id="cast-idle" class="material-icons" title="<fmt:message key="videoPlayer.cast"/>">cast</i> <i id="cast-active" class="material-icons" title="<fmt:message key="videoPlayer.cast"/>">cast_connected</i> <i id="cc-on" class="material-icons" title="<fmt:message key="videoPlayer.subtitles"/>">closed_caption</i> <i id="cc-off" class="material-icons" title="<fmt:message key="videoPlayer.subtitles"/>">closed_caption</i> <i id="fullscreen" class="material-icons" title="<fmt:message key="videoPlayer.fullscreen"/>">fullscreen</i> <i id="new-window" class="material-icons" title="<fmt:message key="videoPlayer.newwindow"/>">open_in_new</i> <span id="play" class="fa-stack fa-lg"> <i class="fa fa-circle fa-stack-2x fa-inverse"></i> <i class="fa fa-play-circle fa-stack-2x"></i> </span> <span id="pause" class="fa-stack fa-lg"> <i class="fa fa-circle fa-stack-2x fa-inverse"></i> <i class="fa fa-pause-circle fa-stack-2x"></i> </span> <span id="buffer" class="fa-stack fa-lg"> <i class="fa fa-circle fa-stack-2x"></i> <i class="fa fa-refresh fa-stack-1x fa-inverse fa-spin"></i> </span> <div style="flex:1;"> <div style="display:flex; align-items: center"> <i id="share" class="material-icons" title="<fmt:message key="main.sharealbum"/>">share</i> <i id="download" class="material-icons" title="<fmt:message key="common.download"/>">file_download</i> <span style="flex-grow:1"></span> <c:if test="${fn:length(model.audioTracks) gt 1}"> <select id="audio-track"> <c:forEach items="${model.audioTracks}" var="track"> <option value="${track.id}">${track.languageName}</option> </c:forEach> </select> </c:if> <span id="progress-and-duration" class="detail"> <span id="progress">0:00</span> / <span id="duration">0:00</span> </span> <c:if test="${not model.streamable}"> <select id="bitrate"> <option value="0" ${model.preferredVideoBitRate eq 0 ? "selected" : ""}>Auto</option> <option value="200" ${model.preferredVideoBitRate eq 200 ? "selected" : ""}>209 Kbps</option> <option value="400" ${model.preferredVideoBitRate eq 400 ? "selected" : ""}>429 Kbps</option> <option value="800" ${model.preferredVideoBitRate eq 800 ? "selected" : ""}>794 Kbps</option> <option value="1200" ${model.preferredVideoBitRate eq 1200 ? "selected" : ""}>1196 Kbps</option> <option value="2200" ${model.preferredVideoBitRate eq 2200 ? "selected" : ""}>2096 Kbps</option> <option value="3300" ${model.preferredVideoBitRate eq 3300 ? "selected" : ""}>3096 Kbps</option> <option value="5000" ${model.preferredVideoBitRate eq 5000 ? "selected" : ""}>4628 Kbps</option> <option value="6500" ${model.preferredVideoBitRate eq 6500 ? "selected" : ""}>6128 Kbps</option> <option value="8600" ${model.preferredVideoBitRate eq 8600 ? "selected" : ""}>7928 Kbps</option> </select> </c:if> <span id="current-bitrate" class="detail"></span> <i id="audio-on" class="fa fa-volume-up fa-fw"></i> <i id="audio-off" class="fa fa-volume-off fa-fw"></i> <div id="volume-slider"></div> </div> </div> </div> </div> </div> <c:if test="${not model.converted and not model.streamable and not model.windowed and model.user.videoConversionRole}"> <p class="detail space-above"> <i class="fa fa-lightbulb-o fa-lg fa-fw icon"></i> <a href="videoConverter.view?id=${model.video.id}"><fmt:message key="videoPlayer.optimize"/></a> </p> </c:if> </div> <%--<div id="debug"></div>--%> <script type="text/javascript"> var castPlayer = new CastPlayer(); </script> </c:if> </body> </html>