diff --git a/src/components/apphost.js b/src/components/apphost.js index 087f031ee7..bbfebdf81e 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -70,6 +70,21 @@ function getDeviceProfile(item) { }); } + const preferredTranscodeVideoCodec = appSettings.preferredTranscodeVideoCodec(); + if (preferredTranscodeVideoCodec) { + profile.TranscodingProfiles.forEach((transcodingProfile) => { + if (transcodingProfile.Type === 'Video') { + const videoCodecs = transcodingProfile.VideoCodec.split(','); + const index = videoCodecs.indexOf(preferredTranscodeVideoCodec); + if (index !== -1) { + videoCodecs.splice(index, 1); + videoCodecs.unshift(preferredTranscodeVideoCodec); + transcodingProfile.VideoCodec = videoCodecs.join(','); + } + } + }); + } + const preferredTranscodeVideoAudioCodec = appSettings.preferredTranscodeVideoAudioCodec(); if (preferredTranscodeVideoAudioCodec) { profile.TranscodingProfiles.forEach((transcodingProfile) => { diff --git a/src/components/playbackSettings/playbackSettings.js b/src/components/playbackSettings/playbackSettings.js index eec2cd4c78..ba418b96c4 100644 --- a/src/components/playbackSettings/playbackSettings.js +++ b/src/components/playbackSettings/playbackSettings.js @@ -182,6 +182,7 @@ function loadForm(context, user, userSettings, systemInfo, apiClient) { context.querySelector('.chkRememberSubtitleSelections').checked = user.Configuration.RememberSubtitleSelections || false; context.querySelector('.chkExternalVideoPlayer').checked = appSettings.enableSystemExternalPlayers(); context.querySelector('.chkLimitSupportedVideoResolution').checked = appSettings.limitSupportedVideoResolution(); + context.querySelector('#selectPreferredTranscodeVideoCodec').value = appSettings.preferredTranscodeVideoCodec(); context.querySelector('#selectPreferredTranscodeVideoAudioCodec').value = appSettings.preferredTranscodeVideoAudioCodec(); setMaxBitrateIntoField(context.querySelector('.selectVideoInNetworkQuality'), true, 'Video'); @@ -218,6 +219,7 @@ function saveUser(context, user, userSettingsInstance, apiClient) { appSettings.maxChromecastBitrate(context.querySelector('.selectChromecastVideoQuality').value); appSettings.maxVideoWidth(context.querySelector('.selectMaxVideoWidth').value); appSettings.limitSupportedVideoResolution(context.querySelector('.chkLimitSupportedVideoResolution').checked); + appSettings.preferredTranscodeVideoCodec(context.querySelector('#selectPreferredTranscodeVideoCodec').value); appSettings.preferredTranscodeVideoAudioCodec(context.querySelector('#selectPreferredTranscodeVideoAudioCodec').value); appSettings.enableDts(context.querySelector('.chkEnableDts').checked); diff --git a/src/components/playbackSettings/playbackSettings.template.html b/src/components/playbackSettings/playbackSettings.template.html index a6ba42ef09..2de92d8fb6 100644 --- a/src/components/playbackSettings/playbackSettings.template.html +++ b/src/components/playbackSettings/playbackSettings.template.html @@ -180,6 +180,16 @@
${EnableTrueHdHelp}
+
+ +
${SelectPreferredTranscodeVideoCodecHelp}
+
+