aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAttila Szakacs <szakacs.attila96@gmail.com>2024-01-18 17:00:00 +0100
committerAttila Szakacs <szakacs.attila96@gmail.com>2024-01-31 19:18:38 +0100
commitce81e2aeab942538a7d5640b7ad88a50398b10d5 (patch)
tree3d78566445040faeac75f804f96242475620fcad
parent8fea819b5152f6a38febb9435df18c2fa26d3273 (diff)
Add alltilla to CONTRIBUTORS.md
Signed-off-by: Attila Szakacs <szakacs.attila96@gmail.com>
-rw-r--r--CONTRIBUTORS.md1
-rw-r--r--MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs34
2 files changed, 21 insertions, 14 deletions
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 457f59e0f..5dcb6daa3 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -4,6 +4,7 @@
- [97carmine](https://github.com/97carmine)
- [Abbe98](https://github.com/Abbe98)
- [agrenott](https://github.com/agrenott)
+ - [alltilla](https://github.com/alltilla)
- [AndreCarvalho](https://github.com/AndreCarvalho)
- [anthonylavado](https://github.com/anthonylavado)
- [Artiume](https://github.com/Artiume)
diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs
index 0e66565ed..8fd1f9fc1 100644
--- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs
+++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs
@@ -472,8 +472,8 @@ namespace MediaBrowser.MediaEncoding.Subtitles
/// <returns>Task.</returns>
private async Task ExtractAllTextSubtitles(MediaSourceInfo mediaSource, CancellationToken cancellationToken)
{
- var semaphores = new List<SemaphoreSlim> { };
- var extractableStreams = new List<MediaStream> { };
+ var semaphores = new List<SemaphoreSlim>();
+ var extractableStreams = new List<MediaStream>();
try
{
@@ -498,9 +498,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
}
if (extractableStreams.Count > 0)
- {
- await ExtractAllTextSubtitlesInternal(mediaSource, extractableStreams, cancellationToken).ConfigureAwait(false);
- }
+ {
+ await ExtractAllTextSubtitlesInternal(mediaSource, extractableStreams, cancellationToken).ConfigureAwait(false);
+ }
}
catch (Exception ex)
{
@@ -521,7 +521,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
CancellationToken cancellationToken)
{
var inputPath = mediaSource.Path;
- var outputPaths = new List<string> { };
+ var outputPaths = new List<string>();
var args = string.Format(
CultureInfo.InvariantCulture,
"-i {0} -copyts",
@@ -531,6 +531,13 @@ namespace MediaBrowser.MediaEncoding.Subtitles
{
var outputPath = GetSubtitleCachePath(mediaSource, subtitleStream.Index, "." + GetTextSubtitleFormat(subtitleStream));
var outputCodec = IsCodecCopyable(subtitleStream.Codec) ? "copy" : "srt";
+ var streamIndex = EncodingHelper.FindIndex(mediaSource.MediaStreams, subtitleStream);
+
+ if (streamIndex == -1)
+ {
+ _logger.LogError("Cannot find subtitle stream index for {InputPath} ({Index}), skipping this stream", inputPath, subtitleStream.Index);
+ continue;
+ }
Directory.CreateDirectory(Path.GetDirectoryName(outputPath) ?? throw new FileNotFoundException($"Calculated path ({outputPath}) is not valid."));
@@ -538,7 +545,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
args += string.Format(
CultureInfo.InvariantCulture,
" -map 0:{0} -an -vn -c:s {1} \"{2}\"",
- subtitleStream.Index,
+ streamIndex,
outputCodec,
outputPath);
}
@@ -614,16 +621,15 @@ namespace MediaBrowser.MediaEncoding.Subtitles
{
_logger.LogError("ffmpeg subtitle extraction failed for {InputPath} to {OutputPath}", inputPath, outputPath);
failed = true;
+ continue;
}
- else
- {
- if (outputPath.EndsWith("ass", StringComparison.OrdinalIgnoreCase))
- {
- await SetAssFont(outputPath, cancellationToken).ConfigureAwait(false);
- }
- _logger.LogInformation("ffmpeg subtitle extraction completed for {InputPath} to {OutputPath}", inputPath, outputPath);
+ if (outputPath.EndsWith("ass", StringComparison.OrdinalIgnoreCase))
+ {
+ await SetAssFont(outputPath, cancellationToken).ConfigureAwait(false);
}
+
+ _logger.LogInformation("ffmpeg subtitle extraction completed for {InputPath} to {OutputPath}", inputPath, outputPath);
}
}