From d19edefbcd020e58031c8bf1101bf20328257303 Mon Sep 17 00:00:00 2001 From: nyanmisaka Date: Sat, 28 Nov 2020 20:55:09 +0800 Subject: [PATCH 1/6] fix image extraction --- MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index 5f60c09ae7..2a979e857e 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -553,12 +553,18 @@ namespace MediaBrowser.MediaEncoding.Encoder var mapArg = imageStreamIndex.HasValue ? (" -map 0:v:" + imageStreamIndex.Value.ToString(CultureInfo.InvariantCulture)) : string.Empty; - var enableThumbnail = !new List { "wtv" }.Contains(container ?? string.Empty, StringComparer.OrdinalIgnoreCase); // Use ffmpeg to sample 100 (we can drop this if required using thumbnail=50 for 50 frames) frames and pick the best thumbnail. Have a fall back just in case. - var thumbnail = enableThumbnail ? ",thumbnail=24" : string.Empty; + var enableThumbnail = useIFrame && !new List { "wtv" }.Contains(container ?? string.Empty, StringComparer.OrdinalIgnoreCase); + if (string.IsNullOrEmpty(vf)) + { + vf = enableThumbnail ? "-vf thumbnail=24" : string.Empty; + } + else + { + vf += enableThumbnail ? ",thumbnail=24" : string.Empty; + } - var args = useIFrame ? string.Format(CultureInfo.InvariantCulture, "-i {0}{3} -threads {5} -v quiet -vframes 1 {2}{4} -f image2 \"{1}\"", inputPath, tempExtractPath, vf, mapArg, thumbnail, threads) : - string.Format(CultureInfo.InvariantCulture, "-i {0}{3} -threads {4} -v quiet -vframes 1 {2} -f image2 \"{1}\"", inputPath, tempExtractPath, vf, mapArg, threads); + var args = string.Format(CultureInfo.InvariantCulture, "-i {0}{3} -threads {4} -v quiet -vframes 1 {2} -f image2 \"{1}\"", inputPath, tempExtractPath, vf, mapArg, threads); var probeSizeArgument = EncodingHelper.GetProbeSizeArgument(1); var analyzeDurationArgument = EncodingHelper.GetAnalyzeDurationArgument(1); From 53c91c2c145535f40f391f1b8d986078f10e3428 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Sat, 28 Nov 2020 21:14:55 +0800 Subject: [PATCH 2/6] Apply suggestions from code review Co-authored-by: BaronGreenback --- MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index 2a979e857e..f8a704efdf 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -554,7 +554,7 @@ namespace MediaBrowser.MediaEncoding.Encoder var mapArg = imageStreamIndex.HasValue ? (" -map 0:v:" + imageStreamIndex.Value.ToString(CultureInfo.InvariantCulture)) : string.Empty; // Use ffmpeg to sample 100 (we can drop this if required using thumbnail=50 for 50 frames) frames and pick the best thumbnail. Have a fall back just in case. - var enableThumbnail = useIFrame && !new List { "wtv" }.Contains(container ?? string.Empty, StringComparer.OrdinalIgnoreCase); + var enableThumbnail = useIFrame && !string.Equals("wtv", container, StringComparer.OrdinalIgnoreCase); if (string.IsNullOrEmpty(vf)) { vf = enableThumbnail ? "-vf thumbnail=24" : string.Empty; From d72f3498bf2c53be0dfb900feba58d84efbffde0 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Sat, 28 Nov 2020 21:27:55 +0800 Subject: [PATCH 3/6] fix ci --- MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index f8a704efdf..cb162f0d46 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -554,7 +554,7 @@ namespace MediaBrowser.MediaEncoding.Encoder var mapArg = imageStreamIndex.HasValue ? (" -map 0:v:" + imageStreamIndex.Value.ToString(CultureInfo.InvariantCulture)) : string.Empty; // Use ffmpeg to sample 100 (we can drop this if required using thumbnail=50 for 50 frames) frames and pick the best thumbnail. Have a fall back just in case. - var enableThumbnail = useIFrame && !string.Equals("wtv", container, StringComparer.OrdinalIgnoreCase); + var enableThumbnail = useIFrame && !string.Equals("wtv", container, StringComparison.OrdinalIgnoreCase); if (string.IsNullOrEmpty(vf)) { vf = enableThumbnail ? "-vf thumbnail=24" : string.Empty; From 0c6efe6317d1682ba71b751686360124eda41de9 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Sat, 28 Nov 2020 22:32:54 +0800 Subject: [PATCH 4/6] Apply suggestions from code review Co-authored-by: Claus Vium --- .../Encoder/MediaEncoder.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index cb162f0d46..8d83096fb5 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -555,13 +555,16 @@ namespace MediaBrowser.MediaEncoding.Encoder // Use ffmpeg to sample 100 (we can drop this if required using thumbnail=50 for 50 frames) frames and pick the best thumbnail. Have a fall back just in case. var enableThumbnail = useIFrame && !string.Equals("wtv", container, StringComparison.OrdinalIgnoreCase); - if (string.IsNullOrEmpty(vf)) + if (enableThumbnail) { - vf = enableThumbnail ? "-vf thumbnail=24" : string.Empty; - } - else - { - vf += enableThumbnail ? ",thumbnail=24" : string.Empty; + if (string.IsNullOrEmpty(vf)) + { + vf = "-vf thumbnail=24"; + } + else + { + vf += ",thumbnail=24"; + } } var args = string.Format(CultureInfo.InvariantCulture, "-i {0}{3} -threads {4} -v quiet -vframes 1 {2} -f image2 \"{1}\"", inputPath, tempExtractPath, vf, mapArg, threads); From bb16174936dca01812d3dc92e6728847bf994b20 Mon Sep 17 00:00:00 2001 From: nyanmisaka Date: Sun, 29 Nov 2020 13:12:41 +0800 Subject: [PATCH 5/6] increase the default image extraction timeout --- MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index 8d83096fb5..753da46a69 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -36,7 +36,7 @@ namespace MediaBrowser.MediaEncoding.Encoder /// /// The default image extraction timeout in milliseconds. /// - internal const int DefaultImageExtractionTimeout = 5000; + internal const int DefaultImageExtractionTimeout = 10000; /// /// The us culture. From 92118c2129ec8175665e65dcd78c1400fbe60c80 Mon Sep 17 00:00:00 2001 From: nyanmisaka Date: Sun, 29 Nov 2020 22:46:26 +0800 Subject: [PATCH 6/6] allow to extract music bitrate info from formatInfo --- MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs index 97d61441cf..27bd693e33 100644 --- a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs +++ b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs @@ -778,7 +778,11 @@ namespace MediaBrowser.MediaEncoding.Probing } } - if (bitrate == 0 && formatInfo != null && !string.IsNullOrEmpty(formatInfo.BitRate) && stream.Type == MediaStreamType.Video) + // The bitrate info of FLAC musics and some videos is included in formatInfo. + if (bitrate == 0 + && formatInfo != null + && !string.IsNullOrEmpty(formatInfo.BitRate) + && (stream.Type == MediaStreamType.Video || stream.Type == MediaStreamType.Audio)) { // If the stream info doesn't have a bitrate get the value from the media format info if (int.TryParse(formatInfo.BitRate, NumberStyles.Any, _usCulture, out var value))