mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
#514 - Support HLS seeking
This commit is contained in:
parent
83ada41f7e
commit
683e6f472c
5 changed files with 45 additions and 53 deletions
|
@ -655,7 +655,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.Studios.length) {
|
if (item.Studios.length) {
|
||||||
html += ' on <a class="textlink" href="itembynamedetails.html?context=' + context + '&studio=' + ApiClient.encodeName(item.Studios[0].Name) + '">' + item.Studios[0].Name + '</a>';
|
html += ' on <a class="textlink" href="itembynamedetails.html?context=' + context + '&id=' + item.Studios[0].Id + '">' + item.Studios[0].Name + '</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (html) {
|
if (html) {
|
||||||
|
|
|
@ -1781,7 +1781,7 @@
|
||||||
html += ' / ';
|
html += ' / ';
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '<a class="textlink" href="itembynamedetails.html?context=' + context + '&studio=' + ApiClient.encodeName(item.Studios[i].Name) + '">' + item.Studios[i].Name + '</a>';
|
html += '<a class="textlink" href="itembynamedetails.html?context=' + context + '&id=' + item.Studios[i].Id + '">' + item.Studios[i].Name + '</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
elem.show().html(html).trigger('create');
|
elem.show().html(html).trigger('create');
|
||||||
|
|
|
@ -1007,13 +1007,7 @@
|
||||||
EnableAutoStreamCopy: false
|
EnableAutoStreamCopy: false
|
||||||
}));
|
}));
|
||||||
|
|
||||||
if (isStatic) webmVideoUrl += seekParam;
|
var hlsVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/master.m3u8', $.extend({}, baseParams, {
|
||||||
|
|
||||||
var hlsVideoUrl;
|
|
||||||
|
|
||||||
if (item.RunTimeTicks) {
|
|
||||||
hlsVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/master.m3u8', $.extend({}, baseParams, {
|
|
||||||
timeStampOffsetMs: 0,
|
|
||||||
maxWidth: m3U8Quality.maxWidth,
|
maxWidth: m3U8Quality.maxWidth,
|
||||||
videoBitrate: m3U8Quality.videoBitrate,
|
videoBitrate: m3U8Quality.videoBitrate,
|
||||||
audioBitrate: m3U8Quality.audioBitrate,
|
audioBitrate: m3U8Quality.audioBitrate,
|
||||||
|
@ -1025,19 +1019,6 @@
|
||||||
|
|
||||||
})) + seekParam;
|
})) + seekParam;
|
||||||
|
|
||||||
} else {
|
|
||||||
hlsVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/stream.m3u8', $.extend({}, baseParams, {
|
|
||||||
timeStampOffsetMs: 0,
|
|
||||||
maxWidth: m3U8Quality.maxWidth,
|
|
||||||
videoBitrate: m3U8Quality.videoBitrate,
|
|
||||||
audioBitrate: m3U8Quality.audioBitrate,
|
|
||||||
VideoCodec: m3U8Quality.videoCodec,
|
|
||||||
AudioCodec: m3U8Quality.audioCodec,
|
|
||||||
profile: 'baseline',
|
|
||||||
level: '3'
|
|
||||||
})) + seekParam;
|
|
||||||
}
|
|
||||||
|
|
||||||
//======================================================================================>
|
//======================================================================================>
|
||||||
|
|
||||||
// Create video player
|
// Create video player
|
||||||
|
@ -1199,9 +1180,7 @@
|
||||||
|
|
||||||
}).on("error.mediaplayerevent", function () {
|
}).on("error.mediaplayerevent", function () {
|
||||||
|
|
||||||
self.clearPauseStop();
|
self.stop();
|
||||||
|
|
||||||
self.resetEnhancements();
|
|
||||||
|
|
||||||
var errorCode = this.error ? this.error.code : '';
|
var errorCode = this.error ? this.error.code : '';
|
||||||
console.log('Html5 Video error code: ' + errorCode);
|
console.log('Html5 Video error code: ' + errorCode);
|
||||||
|
@ -1212,11 +1191,16 @@
|
||||||
errorMsg += " Please ensure there is an open tuner availalble.";
|
errorMsg += " Please ensure there is an open tuner availalble.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (errorCode) {
|
||||||
|
errorMsg += " Error code: " + errorCode;
|
||||||
|
}
|
||||||
|
|
||||||
Dashboard.alert({
|
Dashboard.alert({
|
||||||
title: 'Video Error',
|
title: 'Video Error',
|
||||||
message: errorMsg
|
message: errorMsg
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}).on("click.mediaplayerevent", function (e) {
|
}).on("click.mediaplayerevent", function (e) {
|
||||||
|
|
||||||
if (this.paused) {
|
if (this.paused) {
|
||||||
|
|
|
@ -879,9 +879,9 @@
|
||||||
|
|
||||||
var elem = self.currentMediaElement;
|
var elem = self.currentMediaElement;
|
||||||
|
|
||||||
elem.pause();
|
if (elem) {
|
||||||
|
|
||||||
var isVideo = self.currentItem.MediaType == "Video";
|
elem.pause();
|
||||||
|
|
||||||
$(elem).off("ended.playnext").one("ended", function () {
|
$(elem).off("ended.playnext").one("ended", function () {
|
||||||
|
|
||||||
|
@ -898,7 +898,13 @@
|
||||||
|
|
||||||
}).trigger("ended");
|
}).trigger("ended");
|
||||||
|
|
||||||
if (isVideo) {
|
} else {
|
||||||
|
self.currentMediaElement = null;
|
||||||
|
self.currentItem = null;
|
||||||
|
self.currentMediaSource = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self.currentItem && self.currentItem.MediaType == "Video") {
|
||||||
if (self.isFullScreen()) {
|
if (self.isFullScreen()) {
|
||||||
self.exitFullScreen();
|
self.exitFullScreen();
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
{},
|
{},
|
||||||
{ name: 'Series', sortField: 'SeriesSortName,SortName' },
|
{ name: 'Series', sortField: 'SeriesSortName,SortName' },
|
||||||
{ name: 'Season', sortField: 'SortName' },
|
{ name: 'Season', sortField: 'SortName' },
|
||||||
|
{ name: 'Season Number', sortField: 'IndexNumber' },
|
||||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' }
|
{ name: 'Date Added', sortField: 'DateCreated,SortName' }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -260,6 +261,7 @@
|
||||||
html += item.ParentIndexNumber == null ? '' : item.ParentIndexNumber;
|
html += item.ParentIndexNumber == null ? '' : item.ParentIndexNumber;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 'Season Number':
|
||||||
case 'Track':
|
case 'Track':
|
||||||
{
|
{
|
||||||
html += item.IndexNumber == null ? '' : item.IndexNumber;
|
html += item.IndexNumber == null ? '' : item.IndexNumber;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue