diff --git a/src/scripts/browserDeviceProfile.js b/src/scripts/browserDeviceProfile.js index 6c1550ef25..737d93f4b0 100644 --- a/src/scripts/browserDeviceProfile.js +++ b/src/scripts/browserDeviceProfile.js @@ -899,6 +899,30 @@ export default function (options) { Codec: 'flac', Conditions: flacConditions }); + + const flacTranscodingProfiles = []; + + // Split each video transcoding profile with FLAC so that the containing FLAC is only applied to 2 channels audio + profile.TranscodingProfiles.forEach(transcodingProfile => { + if (transcodingProfile.Type !== 'Video') return; + + const audioCodecs = transcodingProfile.AudioCodec.split(','); + + if (!audioCodecs.includes('flac')) return; + + const flacTranscodingProfile = { ...transcodingProfile }; + flacTranscodingProfile.AudioCodec = 'flac'; + flacTranscodingProfile.ApplyConditions = [ + ...flacTranscodingProfile.ApplyConditions || [], + ...flacConditions + ]; + + flacTranscodingProfiles.push(flacTranscodingProfile); + + transcodingProfile.AudioCodec = audioCodecs.filter(codec => codec != 'flac').join(','); + }); + + profile.TranscodingProfiles.push(...flacTranscodingProfiles); } let maxH264Level = 42;