mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge branch 'master' into master
This commit is contained in:
commit
fb6e0312ac
183 changed files with 6396 additions and 3896 deletions
|
@ -194,7 +194,8 @@ function supportsHdr10(options) {
|
|||
|| browser.web0s
|
||||
|| browser.safari && ((browser.iOS && browser.iOSVersion >= 11) || browser.osx)
|
||||
// Chrome mobile and Firefox have no client side tone-mapping
|
||||
// Edge Chromium on Nvidia is known to have color issues on 10-bit video
|
||||
// Edge Chromium 121+ fixed the tone-mapping color issue on Nvidia
|
||||
|| browser.edgeChromium && (browser.versionMajor >= 121)
|
||||
|| browser.chrome && !browser.mobile
|
||||
);
|
||||
}
|
||||
|
@ -394,8 +395,7 @@ export function canPlaySecondaryAudio(videoTestElement) {
|
|||
&& !browser.firefox
|
||||
// It seems to work on Tizen 5.5+ (2020, Chrome 69+). See https://developer.tizen.org/forums/web-application-development/video-tag-not-work-audiotracks
|
||||
&& (browser.tizenVersion >= 5.5 || !browser.tizen)
|
||||
// Assume webOS 5+ (2020, Chrome 68+) supports secondary audio like Tizen 5.5+
|
||||
&& (browser.web0sVersion >= 5.0 || !browser.web0sVersion);
|
||||
&& (browser.web0sVersion >= 4.0 || !browser.web0sVersion);
|
||||
}
|
||||
|
||||
export default function (options) {
|
||||
|
@ -573,8 +573,8 @@ export default function (options) {
|
|||
const hlsInFmp4VideoCodecs = [];
|
||||
|
||||
if (canPlayAv1(videoTestElement)
|
||||
&& !browser.mobile && (browser.edgeChromium || browser.firefox || browser.chrome)) {
|
||||
// disable av1 on mobile since it can be very slow software decoding
|
||||
&& (browser.safari || (!browser.mobile && (browser.edgeChromium || browser.firefox || browser.chrome)))) {
|
||||
// disable av1 on non-safari mobile browsers since it can be very slow software decoding
|
||||
hlsInFmp4VideoCodecs.push('av1');
|
||||
}
|
||||
|
||||
|
@ -591,11 +591,7 @@ export default function (options) {
|
|||
}
|
||||
|
||||
if (canPlayHevc(videoTestElement, options)) {
|
||||
// safari is lying on HDR and 60fps videos, use fMP4 instead
|
||||
if (!browser.safari) {
|
||||
mp4VideoCodecs.push('hevc');
|
||||
}
|
||||
|
||||
mp4VideoCodecs.push('hevc');
|
||||
if (browser.tizen || browser.web0s) {
|
||||
hlsInTsVideoCodecs.push('hevc');
|
||||
}
|
||||
|
@ -619,12 +615,20 @@ export default function (options) {
|
|||
|
||||
if (canPlayVp9) {
|
||||
mp4VideoCodecs.push('vp9');
|
||||
webmVideoCodecs.push('vp9');
|
||||
// webm support is unreliable on safari 17
|
||||
if (!browser.safari
|
||||
|| (browser.safari && browser.versionMajor >= 15 && browser.versionMajor < 17)) {
|
||||
webmVideoCodecs.push('vp9');
|
||||
}
|
||||
}
|
||||
|
||||
if (canPlayAv1(videoTestElement)) {
|
||||
mp4VideoCodecs.push('av1');
|
||||
webmVideoCodecs.push('av1');
|
||||
// webm support is unreliable on safari 17
|
||||
if (!browser.safari
|
||||
|| (browser.safari && browser.versionMajor >= 15 && browser.versionMajor < 17)) {
|
||||
webmVideoCodecs.push('av1');
|
||||
}
|
||||
}
|
||||
|
||||
if (canPlayVp8 || browser.tizen) {
|
||||
|
@ -1106,6 +1110,25 @@ export default function (options) {
|
|||
});
|
||||
}
|
||||
|
||||
// Safari quirks for HEVC direct-play
|
||||
if (browser.safari) {
|
||||
// Only hvc1 & dvh1 tags are supported
|
||||
hevcCodecProfileConditions.push({
|
||||
Condition: 'EqualsAny',
|
||||
Property: 'VideoCodecTag',
|
||||
Value: 'hvc1|dvh1',
|
||||
IsRequired: true
|
||||
});
|
||||
|
||||
// Framerate above 60fps is not supported
|
||||
hevcCodecProfileConditions.push({
|
||||
Condition: 'LessThanEqual',
|
||||
Property: 'VideoFramerate',
|
||||
Value: '60',
|
||||
IsRequired: true
|
||||
});
|
||||
}
|
||||
|
||||
// On iOS 12.x, for TS container max h264 level is 4.2
|
||||
if (browser.iOS && browser.iOSVersion < 13) {
|
||||
const codecProfile = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue