1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Backport pull request #6373 from jellyfin-web/release-10.10.z

Prevent opus more than 2 channels being remuxed on Safari

Original-merge: 469abcc517

Merged-by: thornbill <thornbill@users.noreply.github.com>

Backported-by: thornbill <thornbill@users.noreply.github.com>
This commit is contained in:
gnattu 2025-01-22 03:12:42 -05:00 committed by thornbill
parent 35a0854cc0
commit cbc356ebdc

View file

@ -1030,6 +1030,48 @@ export default function (options) {
profile.TranscodingProfiles.push(...flacTranscodingProfiles);
}
if (safariSupportsOpus) {
const opusConditions = [
// Safari doesn't support opus with more than 2 channels
{
Condition: 'LessThanEqual',
Property: 'AudioChannels',
Value: '2',
IsRequired: false
}
];
profile.CodecProfiles.push({
Type: 'VideoAudio',
Codec: 'opus',
Conditions: opusConditions
});
const opusTranscodingProfiles = [];
// Split each video transcoding profile with opus so that the containing opus is only applied to 2 channels audio
profile.TranscodingProfiles.forEach(transcodingProfile => {
if (transcodingProfile.Type !== 'Video') return;
const audioCodecs = transcodingProfile.AudioCodec.split(',');
if (!audioCodecs.includes('opus')) return;
const opusTranscodingProfile = { ...transcodingProfile };
opusTranscodingProfile.AudioCodec = 'opus';
opusTranscodingProfile.ApplyConditions = [
...opusTranscodingProfile.ApplyConditions || [],
...opusConditions
];
opusTranscodingProfiles.push(opusTranscodingProfile);
transcodingProfile.AudioCodec = audioCodecs.filter(codec => codec != 'opus').join(',');
});
profile.TranscodingProfiles.push(...opusTranscodingProfiles);
}
let maxH264Level = 42;
let h264Profiles = 'high|main|baseline|constrained baseline';