Browse Source

adjust subtitle extraction

Luke Pulverenti 10 năm trước cách đây
mục cha
commit
9d36f51818
1 tập tin đã thay đổi với 28 bổ sung7 xóa
  1. 28 7
      MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs

+ 28 - 7
MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs

@@ -194,17 +194,38 @@ namespace MediaBrowser.MediaEncoding.Subtitles
             MediaStream subtitleStream,
             CancellationToken cancellationToken)
         {
-            const string extractedFormat = "srt";
-
             if (!subtitleStream.IsExternal)
             {
+                string outputFormat;
+                string outputCodec;
+
+                if (string.Equals(subtitleStream.Codec, "ass", StringComparison.OrdinalIgnoreCase))
+                {
+                    // Extract    
+                    outputCodec = "copy";
+                    outputFormat = "ass";
+                }
+                else if (string.Equals(subtitleStream.Codec, "subrip", StringComparison.OrdinalIgnoreCase) ||
+                         string.Equals(subtitleStream.Codec, "srt", StringComparison.OrdinalIgnoreCase))
+                {
+                    // Extract    
+                    outputCodec = "copy";
+                    outputFormat = "srt";
+                }
+                else
+                {
+                    // Extract    
+                    outputCodec = "srt";
+                    outputFormat = "srt";
+                }
+
                 // Extract    
-                var outputPath = GetSubtitleCachePath(mediaPath, subtitleStream.Index, "." + extractedFormat);
+                var outputPath = GetSubtitleCachePath(mediaPath, subtitleStream.Index, "." + outputFormat);
 
-                await ExtractTextSubtitle(inputFiles, protocol, subtitleStream.Index, "srt", outputPath, cancellationToken)
+                await ExtractTextSubtitle(inputFiles, protocol, subtitleStream.Index, outputCodec, outputPath, cancellationToken)
                         .ConfigureAwait(false);
 
-                return new Tuple<string, string>(outputPath, extractedFormat);
+                return new Tuple<string, string>(outputPath, outputFormat);
             }
 
             var currentFormat = (Path.GetExtension(subtitleStream.Path) ?? subtitleStream.Codec)
@@ -213,12 +234,12 @@ namespace MediaBrowser.MediaEncoding.Subtitles
             if (GetReader(currentFormat, false) == null)
             {
                 // Convert    
-                var outputPath = GetSubtitleCachePath(mediaPath, subtitleStream.Index, "." + extractedFormat);
+                var outputPath = GetSubtitleCachePath(mediaPath, subtitleStream.Index, ".srt");
 
                 await ConvertTextSubtitleToSrt(subtitleStream.Path, outputPath, subtitleStream.Language, cancellationToken)
                         .ConfigureAwait(false);
 
-                return new Tuple<string, string>(outputPath, extractedFormat);
+                return new Tuple<string, string>(outputPath, "srt");
             }
 
             return new Tuple<string, string>(subtitleStream.Path, currentFormat);