aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/Playback/Progressive/VideoService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/Playback/Progressive/VideoService.cs')
-rw-r--r--MediaBrowser.Api/Playback/Progressive/VideoService.cs26
1 files changed, 25 insertions, 1 deletions
diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs
index 7ae64b834..47f5d95e0 100644
--- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs
+++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs
@@ -9,6 +9,7 @@ using MediaBrowser.Model.IO;
using MediaBrowser.Model.Serialization;
using System;
using System.IO;
+using System.Linq;
using System.Threading.Tasks;
using MediaBrowser.Common.IO;
using MediaBrowser.Controller.IO;
@@ -111,7 +112,12 @@ namespace MediaBrowser.Api.Playback.Progressive
var inputModifier = GetInputModifier(state);
- return string.Format("{0} {1}{2} {3} {4} -map_metadata -1 -map_chapters -1 -threads {5} {6}{7} -y \"{8}\"",
+ var subtitleArguments = state.SubtitleStream != null &&
+ state.SubtitleDeliveryMethod == SubtitleDeliveryMethod.Embed
+ ? GetSubtitleArguments(state)
+ : string.Empty;
+
+ return string.Format("{0} {1}{2} {3} {4} -map_metadata -1 -map_chapters -1 -threads {5} {6}{7}{8} -y \"{9}\"",
inputModifier,
GetInputArgument(state),
keyFrame,
@@ -119,11 +125,29 @@ namespace MediaBrowser.Api.Playback.Progressive
GetVideoArguments(state, videoCodec),
threads,
GetAudioArguments(state),
+ subtitleArguments,
format,
outputPath
).Trim();
}
+ private string GetSubtitleArguments(StreamState state)
+ {
+ var format = state.SupportedSubtitleCodecs.FirstOrDefault();
+ string codec;
+
+ if (string.IsNullOrWhiteSpace(format) || string.Equals(format, state.SubtitleStream.Codec, StringComparison.OrdinalIgnoreCase))
+ {
+ codec = "copy";
+ }
+ else
+ {
+ codec = format;
+ }
+
+ return " -codec:s:0 " + codec;
+ }
+
/// <summary>
/// Gets video arguments to pass to ffmpeg
/// </summary>