1
0
Fork 0
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:
Luke Pulverenti 2014-07-01 17:13:32 -04:00
parent 83ada41f7e
commit 683e6f472c
5 changed files with 45 additions and 53 deletions

View file

@ -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) {

View file

@ -1781,7 +1781,7 @@
html += '&nbsp;&nbsp;/&nbsp;&nbsp;'; html += '&nbsp;&nbsp;/&nbsp;&nbsp;';
} }
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');

View file

@ -1007,36 +1007,17 @@
EnableAutoStreamCopy: false EnableAutoStreamCopy: false
})); }));
if (isStatic) webmVideoUrl += seekParam; var hlsVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/master.m3u8', $.extend({}, baseParams, {
maxWidth: m3U8Quality.maxWidth,
videoBitrate: m3U8Quality.videoBitrate,
audioBitrate: m3U8Quality.audioBitrate,
VideoCodec: m3U8Quality.videoCodec,
AudioCodec: m3U8Quality.audioCodec,
profile: 'baseline',
level: '3',
StartTimeTicks: 0
var hlsVideoUrl; })) + seekParam;
if (item.RunTimeTicks) {
hlsVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/master.m3u8', $.extend({}, baseParams, {
timeStampOffsetMs: 0,
maxWidth: m3U8Quality.maxWidth,
videoBitrate: m3U8Quality.videoBitrate,
audioBitrate: m3U8Quality.audioBitrate,
VideoCodec: m3U8Quality.videoCodec,
AudioCodec: m3U8Quality.audioCodec,
profile: 'baseline',
level: '3',
StartTimeTicks: 0
})) + 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;
}
//======================================================================================> //======================================================================================>
@ -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) {

View file

@ -47,7 +47,7 @@
var playerTime = Math.floor(10000000 * (mediaElement || self.currentMediaElement).currentTime); var playerTime = Math.floor(10000000 * (mediaElement || self.currentMediaElement).currentTime);
//if (!self.isCopyingTimestamps) { //if (!self.isCopyingTimestamps) {
playerTime += self.startTimeTicksOffset; playerTime += self.startTimeTicksOffset;
//} //}
return playerTime; return playerTime;
@ -879,26 +879,32 @@
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 () {
$(this).off(); $(this).off();
if (this.tagName.toLowerCase() != 'audio') { if (this.tagName.toLowerCase() != 'audio') {
$(this).remove(); $(this).remove();
} }
elem.src = ""; elem.src = "";
self.currentMediaElement = null;
self.currentItem = null;
self.currentMediaSource = null;
}).trigger("ended");
} else {
self.currentMediaElement = null; self.currentMediaElement = null;
self.currentItem = null; self.currentItem = null;
self.currentMediaSource = null; self.currentMediaSource = null;
}
}).trigger("ended"); if (self.currentItem && self.currentItem.MediaType == "Video") {
if (isVideo) {
if (self.isFullScreen()) { if (self.isFullScreen()) {
self.exitFullScreen(); self.exitFullScreen();
} }

View file

@ -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;