aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-30 11:12:28 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-30 11:12:28 -0400
commit9d36f518182bc075c19d78084870f5115fa62d1e (patch)
treeffc92c88d24850b2f82b6b3a8bdd904a2ccc77a5
parent33c6c37316b062b9afc1a4b3c8f97b658cb62a70 (diff)
adjust subtitle extraction
-rw-r--r--MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs35
1 files changed, 28 insertions, 7 deletions
diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs
index 87d706a16..7a3a7d2d0 100644
--- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs
+++ b/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);