mirror of
https://github.com/jellyfin/jellyfin-web.git
synced 2024-11-18 19:38:20 -07:00
firefox hls fixes
Conflicts: MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/.bower.json MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js
This commit is contained in:
parent
924548c761
commit
d96250df7f
@ -15,12 +15,12 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {},
|
"devDependencies": {},
|
||||||
"ignore": [],
|
"ignore": [],
|
||||||
"version": "1.0.14",
|
"version": "1.0.18",
|
||||||
"_release": "1.0.14",
|
"_release": "1.0.18",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "1.0.14",
|
"tag": "1.0.18",
|
||||||
"commit": "a7a8baf260ab509c5f9b1750cbf6fe921883141c"
|
"commit": "a251227c4635bcac732075e494b2d8a4e7956d26"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/MediaBrowser/emby-webcomponents.git",
|
"_source": "git://github.com/MediaBrowser/emby-webcomponents.git",
|
||||||
"_target": "~1.0.0",
|
"_target": "~1.0.0",
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
/(opr)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
/(opr)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
||||||
/(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
/(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
||||||
/(safari)[ \/]([\w.]+)/.exec(ua) ||
|
/(safari)[ \/]([\w.]+)/.exec(ua) ||
|
||||||
|
/(firefox)[ \/]([\w.]+)/.exec(ua) ||
|
||||||
/(msie) ([\w.]+)/.exec(ua) ||
|
/(msie) ([\w.]+)/.exec(ua) ||
|
||||||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
||||||
[];
|
[];
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
list.push('h264');
|
list.push('h264');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (document.createElement('audio').canPlayType('audio/aac').replace(/no/, '')) {
|
if (document.createElement('audio').canPlayType('audio/aac').replace(/no/, '') || browser.firefox) {
|
||||||
list.push('aac');
|
list.push('aac');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,12 +103,33 @@
|
|||||||
|
|
||||||
profile.DirectPlayProfiles = [];
|
profile.DirectPlayProfiles = [];
|
||||||
|
|
||||||
|
var videoAudioCodecs = [];
|
||||||
|
|
||||||
|
// Only put mp3 first if mkv support is there
|
||||||
|
// Otherwise with HLS and mp3 audio we're seeing some browsers
|
||||||
|
if (canPlayMkv) {
|
||||||
|
if (canPlayMp3) {
|
||||||
|
videoAudioCodecs.push('mp3');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (canPlayAac) {
|
||||||
|
videoAudioCodecs.push('aac');
|
||||||
|
}
|
||||||
|
if (!canPlayMkv) {
|
||||||
|
if (canPlayMp3) {
|
||||||
|
videoAudioCodecs.push('mp3');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (canPlayAc3) {
|
||||||
|
videoAudioCodecs.push('ac3');
|
||||||
|
}
|
||||||
|
|
||||||
if (supportedFormats.indexOf('h264') != -1) {
|
if (supportedFormats.indexOf('h264') != -1) {
|
||||||
profile.DirectPlayProfiles.push({
|
profile.DirectPlayProfiles.push({
|
||||||
Container: 'mp4,m4v',
|
Container: 'mp4,m4v',
|
||||||
Type: 'Video',
|
Type: 'Video',
|
||||||
VideoCodec: 'h264',
|
VideoCodec: 'h264',
|
||||||
AudioCodec: 'aac' + (canPlayMp3 ? ',mp3' : '') + (canPlayAc3 ? ',ac3' : '')
|
AudioCodec: videoAudioCodecs.join(',')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,7 +138,7 @@
|
|||||||
Container: 'mkv,mov',
|
Container: 'mkv,mov',
|
||||||
Type: 'Video',
|
Type: 'Video',
|
||||||
VideoCodec: 'h264',
|
VideoCodec: 'h264',
|
||||||
AudioCodec: 'aac' + (canPlayMp3 ? ',mp3' : '') + (canPlayAc3 ? ',ac3' : '')
|
AudioCodec: videoAudioCodecs.join(',')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,17 +181,6 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var videoAudioCodecs = [];
|
|
||||||
if (canPlayMp3) {
|
|
||||||
videoAudioCodecs.push('mp3');
|
|
||||||
}
|
|
||||||
if (canPlayAac) {
|
|
||||||
videoAudioCodecs.push('aac');
|
|
||||||
}
|
|
||||||
if (canPlayAc3) {
|
|
||||||
videoAudioCodecs.push('ac3');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Can't use mkv on mobile because we have to use the native player controls and they won't be able to seek it
|
// Can't use mkv on mobile because we have to use the native player controls and they won't be able to seek it
|
||||||
if (canPlayMkv && !browser.mobile) {
|
if (canPlayMkv && !browser.mobile) {
|
||||||
profile.TranscodingProfiles.push({
|
profile.TranscodingProfiles.push({
|
||||||
@ -235,7 +245,7 @@
|
|||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
|
|
||||||
var videoAudioChannels = browser.safari ? '2' : '6';
|
var videoAudioChannels = '6';
|
||||||
|
|
||||||
profile.CodecProfiles.push({
|
profile.CodecProfiles.push({
|
||||||
Type: 'VideoAudio',
|
Type: 'VideoAudio',
|
||||||
@ -268,24 +278,6 @@
|
|||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
profile.CodecProfiles.push({
|
|
||||||
Type: 'VideoAudio',
|
|
||||||
Codec: 'aac,mp3',
|
|
||||||
Conditions: [
|
|
||||||
{
|
|
||||||
Condition: 'LessThanEqual',
|
|
||||||
Property: 'AudioChannels',
|
|
||||||
Value: videoAudioChannels
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Condition: 'Equals',
|
|
||||||
Property: 'IsSecondaryAudio',
|
|
||||||
Value: 'false',
|
|
||||||
IsRequired: 'false'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
profile.CodecProfiles.push({
|
profile.CodecProfiles.push({
|
||||||
Type: 'VideoAudio',
|
Type: 'VideoAudio',
|
||||||
Conditions: [
|
Conditions: [
|
||||||
|
@ -29,14 +29,14 @@
|
|||||||
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
||||||
},
|
},
|
||||||
"ignore": [],
|
"ignore": [],
|
||||||
"homepage": "https://github.com/PolymerElements/iron-behaviors",
|
"homepage": "https://github.com/polymerelements/iron-behaviors",
|
||||||
"_release": "1.0.12",
|
"_release": "1.0.12",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "v1.0.12",
|
"tag": "v1.0.12",
|
||||||
"commit": "657f526a2382a659cdf4e13be87ecc89261588a3"
|
"commit": "657f526a2382a659cdf4e13be87ecc89261588a3"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/PolymerElements/iron-behaviors.git",
|
"_source": "git://github.com/polymerelements/iron-behaviors.git",
|
||||||
"_target": "^1.0.0",
|
"_target": "^1.0.0",
|
||||||
"_originalSource": "PolymerElements/iron-behaviors"
|
"_originalSource": "polymerelements/iron-behaviors"
|
||||||
}
|
}
|
@ -52,7 +52,7 @@
|
|||||||
"tag": "v1.1.3",
|
"tag": "v1.1.3",
|
||||||
"commit": "f070288446f9e78fbe16b032ddb429a8e8015ee7"
|
"commit": "f070288446f9e78fbe16b032ddb429a8e8015ee7"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/PolymerElements/paper-input.git",
|
"_source": "git://github.com/polymerelements/paper-input.git",
|
||||||
"_target": "^1.0.0",
|
"_target": "^1.0.9",
|
||||||
"_originalSource": "PolymerElements/paper-input"
|
"_originalSource": "polymerelements/paper-input"
|
||||||
}
|
}
|
@ -24,14 +24,14 @@
|
|||||||
"web-component-tester": "*"
|
"web-component-tester": "*"
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"homepage": "https://github.com/Polymer/polymer",
|
"homepage": "https://github.com/polymer/polymer",
|
||||||
"_release": "1.2.3",
|
"_release": "1.2.3",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "v1.2.3",
|
"tag": "v1.2.3",
|
||||||
"commit": "aa535d1675342007cbf64dc9c66497cf74cbc616"
|
"commit": "aa535d1675342007cbf64dc9c66497cf74cbc616"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/Polymer/polymer.git",
|
"_source": "git://github.com/polymer/polymer.git",
|
||||||
"_target": "^1.0.0",
|
"_target": "^1.0.0",
|
||||||
"_originalSource": "Polymer/polymer"
|
"_originalSource": "polymer/polymer"
|
||||||
}
|
}
|
@ -967,9 +967,12 @@
|
|||||||
|
|
||||||
self.createStreamInfo('Video', item, mediaSource, startPosition).then(function (streamInfo) {
|
self.createStreamInfo('Video', item, mediaSource, startPosition).then(function (streamInfo) {
|
||||||
|
|
||||||
|
var isHls = streamInfo.url.toLowerCase().indexOf('.m3u8') != -1;
|
||||||
|
|
||||||
// Huge hack alert. Safari doesn't seem to like if the segments aren't available right away when playback starts
|
// Huge hack alert. Safari doesn't seem to like if the segments aren't available right away when playback starts
|
||||||
// This will start the transcoding process before actually feeding the video url into the player
|
// This will start the transcoding process before actually feeding the video url into the player
|
||||||
if (browserInfo.safari && !mediaSource.RunTimeTicks) {
|
// Edit: Also seeing stalls from hls.js
|
||||||
|
if ((browserInfo.safari || browserInfo.msie || browserInfo.firefox) && !mediaSource.RunTimeTicks && isHls) {
|
||||||
|
|
||||||
Dashboard.showLoadingMsg();
|
Dashboard.showLoadingMsg();
|
||||||
var hlsPlaylistUrl = streamInfo.url.replace('master.m3u8', 'live.m3u8');
|
var hlsPlaylistUrl = streamInfo.url.replace('master.m3u8', 'live.m3u8');
|
||||||
|
@ -77,15 +77,20 @@
|
|||||||
profile.DirectPlayProfiles = [];
|
profile.DirectPlayProfiles = [];
|
||||||
|
|
||||||
var videoAudioCodecs = [];
|
var videoAudioCodecs = [];
|
||||||
// Putting mp3 first is really just a hack to ensure we transcode to 2 channels
|
// Only put mp3 first if mkv support is there
|
||||||
|
// Otherwise with HLS and mp3 audio we're seeing firefox and chrome not play it with HLS
|
||||||
|
if (canPlayMkv) {
|
||||||
if (canPlayMp3) {
|
if (canPlayMp3) {
|
||||||
videoAudioCodecs.push('mp3');
|
videoAudioCodecs.push('mp3');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (canPlayAac) {
|
if (canPlayAac) {
|
||||||
videoAudioCodecs.push('aac');
|
videoAudioCodecs.push('aac');
|
||||||
}
|
}
|
||||||
if (canPlayAc3) {
|
if (!canPlayMkv) {
|
||||||
videoAudioCodecs.push('ac3');
|
if (canPlayMp3) {
|
||||||
|
videoAudioCodecs.push('mp3');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (supportedFormats.indexOf('h264') != -1) {
|
if (supportedFormats.indexOf('h264') != -1) {
|
||||||
@ -1826,7 +1831,8 @@
|
|||||||
list.push('h264');
|
list.push('h264');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (document.createElement('audio').canPlayType('audio/aac').replace(/no/, '')) {
|
// Firefox always reports that it doesn't support aac, so assume that it does
|
||||||
|
if (document.createElement('audio').canPlayType('audio/aac').replace(/no/, '') || browserInfo.firefox) {
|
||||||
list.push('aac');
|
list.push('aac');
|
||||||
}
|
}
|
||||||
if (document.createElement('audio').canPlayType('audio/mp3').replace(/no/, '')) {
|
if (document.createElement('audio').canPlayType('audio/mp3').replace(/no/, '')) {
|
||||||
|
Loading…
Reference in New Issue
Block a user