1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

audio fix for firefox

This commit is contained in:
Luke Pulverenti 2013-05-23 21:47:07 -04:00
parent cac0ffef2f
commit f4717a82f1
3 changed files with 378 additions and 53 deletions

View file

@ -303,9 +303,11 @@
showPlayMenu: function (positionTo, itemId, mediaType, resumePositionTicks) {
var canPlay = MediaPlayer.canPlayMediaType(mediaType);
var isPlaying = MediaPlayer.isPlaying();
if (!isPlaying && !resumePositionTicks) {
if (canPlay && !isPlaying && !resumePositionTicks) {
MediaPlayer.playById(itemId);
return;
}
@ -317,15 +319,17 @@
html += '<ul data-role="listview" style="min-width: 150px;" data-theme="c">';
html += '<li data-role="list-divider" data-theme="a">Play Menu</li>';
html += '<li><a href="#" onclick="MediaPlayer.playById(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Play</a></li>';
if (canPlay) {
html += '<li><a href="#" onclick="MediaPlayer.playById(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Play</a></li>';
if (resumePositionTicks) {
html += '<li><a href="#" onclick="MediaPlayer.playById(\'' + itemId + '\', ' + resumePositionTicks + ');LibraryBrowser.closePlayMenu();">Resume</a></li>';
}
if (resumePositionTicks) {
html += '<li><a href="#" onclick="MediaPlayer.playById(\'' + itemId + '\', ' + resumePositionTicks + ');LibraryBrowser.closePlayMenu();">Resume</a></li>';
}
if (isPlaying && MediaPlayer.canQueue(mediaType)) {
html += '<li><a href="#" onclick="MediaPlayer.playNext(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Play Next</a></li>';
html += '<li><a href="#" onclick="MediaPlayer.playLast(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Play Last</a></li>';
if (isPlaying && MediaPlayer.canQueue(mediaType)) {
html += '<li><a href="#" onclick="MediaPlayer.playNext(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Play Next</a></li>';
html += '<li><a href="#" onclick="MediaPlayer.playLast(\'' + itemId + '\');LibraryBrowser.closePlayMenu();">Play Last</a></li>';
}
}
html += '</ul>';

View file

@ -1,6 +1,7 @@
(function (document, setTimeout, clearTimeout, screen, localStorage, _V_, $, setInterval, window) {
function mediaPlayer() {
var self = this;
var testableAudioElement = document.createElement('audio');
@ -87,6 +88,47 @@
}
}
function onPositionSliderChange() {
isPositionSliderActive = false;
var element = currentMediaElement;
var newPercent = parseInt(this.value);
var newPositionTicks = (newPercent / 100) * currentItem.RunTimeTicks;
if (isStaticStream) {
element.currentTime = newPositionTicks / (1000 * 10000);
} else {
var currentSrc = element.currentSrc;
if (currentSrc.toLowerCase().indexOf('starttimeticks') == -1) {
currentSrc += "&starttimeticks=" + newPositionTicks;
} else {
currentSrc = replaceQueryString(currentSrc, 'starttimeticks', newPositionTicks);
}
clearProgressInterval();
$(element).off('ended.playbackstopped').on("play.onceafterseek", function () {
$(this).off('play.onceafterseek').on('ended.playbackstopped', onPlaybackStopped);
startProgressInterval(currentItem.Id);
sendProgressUpdate(currentItem.Id);
});
startTimeTicksOffset = newPositionTicks;
element.src = currentSrc;
}
}
$(function () {
muteButton = $('#muteButton');
@ -103,53 +145,28 @@
$(".jqueryuislider").slider({ orientation: "horizontal" });
positionSlider = $(".positionSlider").on('change', function () {
positionSlider = $(".positionSlider").on('mousedown', function () {
isPositionSliderActive = true;
setCurrentTimePercent(parseInt(this.value), currentItem);
}).on('changed', function () {
isPositionSliderActive = false;
var element = currentMediaElement;
var newPercent = parseInt(this.value);
var newPositionTicks = (newPercent / 100) * currentItem.RunTimeTicks;
if (isStaticStream) {
element.currentTime = newPositionTicks / (1000 * 10000);
} else {
var currentSrc = element.currentSrc;
if (currentSrc.toLowerCase().indexOf('starttimeticks') == -1) {
currentSrc += "&starttimeticks=" + newPositionTicks;
} else {
currentSrc = replaceQueryString(currentSrc, 'starttimeticks', newPositionTicks);
}
clearProgressInterval();
$(element).off('ended.playbackstopped').on("play.onceafterseek", function () {
$(this).off('play.onceafterseek').on('ended.playbackstopped', onPlaybackStopped);
startProgressInterval(currentItem.Id);
sendProgressUpdate(currentItem.Id);
});
startTimeTicksOffset = newPositionTicks;
element.src = currentSrc;
}
});
if ($.browser.mozilla) {
positionSlider.on('change', onPositionSliderChange);
} else {
positionSlider.on('change', function () {
isPositionSliderActive = true;
setCurrentTimePercent(parseInt(this.value), currentItem);
}).on('changed', onPositionSliderChange);
}
(function (el, timeout) {
var timer, trig = function () { el.trigger("changed"); };
el.bind("change", function () {
@ -482,9 +499,19 @@
}
self.canPlay = function (item) {
return self.canPlayMediaType(item.MediaType);
};
self.canPlayMediaType = function (mediaType) {
if ($.browser.android || $.browser.iphone || $.browser.ipad) {
return false;
}
var media;
if (item.MediaType === "Video") {
if (mediaType === "Video") {
media = testableVideoElement;
if (media.canPlayType) {
@ -494,11 +521,11 @@
return false;
}
if (item.MediaType === "Audio") {
if (mediaType === "Audio") {
media = testableAudioElement;
if (media.canPlayType) {
return media.canPlayType('audio/mpeg').replace(/no/, '') || media.canPlayType('audio/webm').replace(/no/, '') || media.canPlayType('audio/aac').replace(/no/, '') || media.canPlayType('audio/ogg').replace(/no/, '');
return media.canPlayType('audio/mpeg').replace(/no/, '') || media.canPlayType('audio/webm').replace(/no/, '') || media.canPlayType('audio/aac').replace(/no/, '');
}
return false;