diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js index a5d254e138..8719e2b291 100644 --- a/dashboard-ui/scripts/mediaplayer-video.js +++ b/dashboard-ui/scripts/mediaplayer-video.js @@ -790,11 +790,7 @@ var currentSrc = self.currentMediaElement.currentSrc.toLowerCase(); var isStatic = currentSrc.indexOf('static=true') != -1; - var transcodingExtension = self.getTranscodingExtension(); - - var currentAudioStreamIndex = getParameterByName('AudioStreamIndex', self.currentMediaElement.currentSrc); - - var options = getVideoQualityOptions(self.currentMediaSource.MediaStreams, currentAudioStreamIndex, transcodingExtension); + var options = getVideoQualityOptions(self.currentMediaSource.MediaStreams); if (isStatic) { options[0].name = "Direct"; @@ -1067,7 +1063,11 @@ EnableAutoStreamCopy: false })); - if (isStatic) mp4VideoUrl += seekParam; + if (isStatic) { + mp4VideoUrl += seekParam; + } else { + mp4VideoUrl += "&ClientTime=" + new Date().getTime(); + } var webmVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/stream.webm', $.extend({}, baseParams, { VideoCodec: 'vpx', @@ -1113,6 +1113,12 @@ html += ''; } + var mp4BeforeWebm = self.getVideoTranscodingExtension() != '.webm'; + + if (mp4BeforeWebm) { + html += ''; + } + // Have to put webm ahead of mp4 because it will play in fast forward in chrome // And firefox doesn't like fragmented mp4 if (!isStatic) { @@ -1120,7 +1126,9 @@ html += ''; } - html += ''; + if (!mp4BeforeWebm) { + html += ''; + } if (self.supportsTextTracks()) { var textStreams = subtitleStreams.filter(function (s) { diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index ae4c5d8ec3..b1ef2ab79f 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -39,6 +39,7 @@ self.updateCanClientSeek = function (elem) { var duration = elem.duration; + canClientSeek = duration && !isNaN(duration) && duration != Number.POSITIVE_INFINITY && duration != Number.NEGATIVE_INFINITY; }; @@ -71,7 +72,17 @@ }, intervalTime); }; - self.getTranscodingExtension = function () { + self.getCurrentMediaExtension = function(currentSrc) { + currentSrc = currentSrc.split('?')[0]; + + return currentSrc.substring(currentSrc.lastIndexOf('.')); + }; + + self.getVideoTranscodingExtension = function (currentSrc) { + + if (currentSrc) { + return self.getCurrentMediaExtension(currentSrc); + } var media = testableVideoElement; @@ -108,7 +119,7 @@ if (self.currentItem.MediaType == "Video") { - transcodingExtension = self.getTranscodingExtension(); + transcodingExtension = self.getVideoTranscodingExtension(currentSrc); if (params.AudioStreamIndex != null) { currentSrc = replaceQueryString(currentSrc, 'AudioStreamIndex', params.AudioStreamIndex); @@ -140,7 +151,7 @@ if (finalParams.isStatic) { currentSrc = currentSrc.replace('.webm', '.mp4').replace('.m3u8', '.mp4'); } else { - currentSrc = currentSrc.replace('.mp4', transcodingExtension).replace('.m4v', transcodingExtension).replace('.mkv', transcodingExtension); + currentSrc = currentSrc.replace('.mp4', transcodingExtension).replace('.m4v', transcodingExtension).replace('.mkv', transcodingExtension).replace('.webm', transcodingExtension); currentSrc = replaceQueryString(currentSrc, 'ClientTime', new Date().getTime()); }