From 32fc33894d33b4bf306788cdb3bd3beeeb3aed4e Mon Sep 17 00:00:00 2001 From: scampower3 <81431263+scampower3@users.noreply.github.com> Date: Sat, 18 May 2024 13:19:56 +0800 Subject: [PATCH] Add setting to prioritise what audio codec to transcode to (#5434) * Add setting to prioritise what audio codec to transcode to * Add comment * rename selectPreferredTranscodeAudio to preferredTranscodeAudio * Add review changes * Add review changes * Add reviewed fixes * Add help text. * Fix elint Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Change *AudioCodecInVideo to *VideoAudioCodec and move option to video advanced * Update src/components/playbackSettings/playbackSettings.template.html Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/components/apphost.js | 15 +++++++++++++++ .../playbackSettings/playbackSettings.js | 2 ++ .../playbackSettings.template.html | 13 +++++++++++++ src/scripts/settings/appSettings.js | 12 ++++++++++++ src/strings/en-us.json | 2 ++ 5 files changed, 44 insertions(+) diff --git a/src/components/apphost.js b/src/components/apphost.js index 742476195d..40c616ca38 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -70,6 +70,21 @@ function getDeviceProfile(item) { }); } + const preferredTranscodeVideoAudioCodec = appSettings.preferredTranscodeVideoAudioCodec(); + if (preferredTranscodeVideoAudioCodec) { + profile.TranscodingProfiles.forEach((transcodingProfile) => { + if (transcodingProfile.Type === 'Video') { + const audioCodecs = transcodingProfile.AudioCodec.split(','); + const index = audioCodecs.indexOf(preferredTranscodeVideoAudioCodec); + if (index !== -1) { + audioCodecs.splice(index, 1); + audioCodecs.unshift(preferredTranscodeVideoAudioCodec); + transcodingProfile.AudioCodec = audioCodecs.join(','); + } + } + }); + } + resolve(profile); }); } diff --git a/src/components/playbackSettings/playbackSettings.js b/src/components/playbackSettings/playbackSettings.js index 6717c66613..eec2cd4c78 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('#selectPreferredTranscodeVideoAudioCodec').value = appSettings.preferredTranscodeVideoAudioCodec(); setMaxBitrateIntoField(context.querySelector('.selectVideoInNetworkQuality'), true, 'Video'); setMaxBitrateIntoField(context.querySelector('.selectVideoInternetQuality'), false, 'Video'); @@ -217,6 +218,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.preferredTranscodeVideoAudioCodec(context.querySelector('#selectPreferredTranscodeVideoAudioCodec').value); appSettings.enableDts(context.querySelector('.chkEnableDts').checked); appSettings.enableTrueHd(context.querySelector('.chkEnableTrueHd').checked); diff --git a/src/components/playbackSettings/playbackSettings.template.html b/src/components/playbackSettings/playbackSettings.template.html index eb416687d7..a6ba42ef09 100644 --- a/src/components/playbackSettings/playbackSettings.template.html +++ b/src/components/playbackSettings/playbackSettings.template.html @@ -179,6 +179,19 @@
${EnableTrueHdHelp}
+ +
+ +
${SelectPreferredTranscodeVideoAudioCodecHelp}
+