mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-06-03 21:54:26 -04:00
Allow flac inside mp4 for all HLS audio streams
The -strict -2 setting was only added if the encoder was set to 'copy'. If 'flac' is explicitly requested, we also need to set it, so that ffmpeg doesn't abort the conversion. Fixes: #10066
This commit is contained in:
parent
19fb061381
commit
79cff704ff
@ -1704,18 +1704,29 @@ public class DynamicHlsController : BaseJellyfinApiController
|
|||||||
|
|
||||||
var audioCodec = _encodingHelper.GetAudioEncoder(state);
|
var audioCodec = _encodingHelper.GetAudioEncoder(state);
|
||||||
|
|
||||||
|
// dts, flac, opus and truehd are experimental in mp4 muxer
|
||||||
|
var strictArgs = string.Empty;
|
||||||
|
var actualOutputAudioCodec = state.ActualOutputAudioCodec;
|
||||||
|
if (string.Equals(actualOutputAudioCodec, "flac", StringComparison.OrdinalIgnoreCase)
|
||||||
|
|| string.Equals(actualOutputAudioCodec, "opus", StringComparison.OrdinalIgnoreCase)
|
||||||
|
|| string.Equals(actualOutputAudioCodec, "dts", StringComparison.OrdinalIgnoreCase)
|
||||||
|
|| string.Equals(actualOutputAudioCodec, "truehd", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
strictArgs = " -strict -2";
|
||||||
|
}
|
||||||
|
|
||||||
if (!state.IsOutputVideo)
|
if (!state.IsOutputVideo)
|
||||||
{
|
{
|
||||||
if (EncodingHelper.IsCopyCodec(audioCodec))
|
if (EncodingHelper.IsCopyCodec(audioCodec))
|
||||||
{
|
{
|
||||||
var bitStreamArgs = EncodingHelper.GetAudioBitStreamArguments(state, state.Request.SegmentContainer, state.MediaSource.Container);
|
var bitStreamArgs = EncodingHelper.GetAudioBitStreamArguments(state, state.Request.SegmentContainer, state.MediaSource.Container);
|
||||||
|
|
||||||
return "-acodec copy -strict -2" + bitStreamArgs;
|
return "-acodec copy" + bitStreamArgs + strictArgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
var audioTranscodeParams = string.Empty;
|
var audioTranscodeParams = string.Empty;
|
||||||
|
|
||||||
audioTranscodeParams += "-acodec " + audioCodec;
|
audioTranscodeParams += "-acodec " + audioCodec + strictArgs;
|
||||||
|
|
||||||
var audioBitrate = state.OutputAudioBitrate;
|
var audioBitrate = state.OutputAudioBitrate;
|
||||||
var audioChannels = state.OutputAudioChannels;
|
var audioChannels = state.OutputAudioChannels;
|
||||||
@ -1747,17 +1758,6 @@ public class DynamicHlsController : BaseJellyfinApiController
|
|||||||
return audioTranscodeParams;
|
return audioTranscodeParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
// dts, flac, opus and truehd are experimental in mp4 muxer
|
|
||||||
var strictArgs = string.Empty;
|
|
||||||
var actualOutputAudioCodec = state.ActualOutputAudioCodec;
|
|
||||||
if (string.Equals(actualOutputAudioCodec, "flac", StringComparison.OrdinalIgnoreCase)
|
|
||||||
|| string.Equals(actualOutputAudioCodec, "opus", StringComparison.OrdinalIgnoreCase)
|
|
||||||
|| string.Equals(actualOutputAudioCodec, "dts", StringComparison.OrdinalIgnoreCase)
|
|
||||||
|| string.Equals(actualOutputAudioCodec, "truehd", StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
|
||||||
strictArgs = " -strict -2";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (EncodingHelper.IsCopyCodec(audioCodec))
|
if (EncodingHelper.IsCopyCodec(audioCodec))
|
||||||
{
|
{
|
||||||
var videoCodec = _encodingHelper.GetVideoEncoder(state, _encodingOptions);
|
var videoCodec = _encodingHelper.GetVideoEncoder(state, _encodingOptions);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user