aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs
diff options
context:
space:
mode:
authorAndrew Rabert <6550543+nvllsvm@users.noreply.github.com>2018-12-14 18:06:12 -0500
committerGitHub <noreply@github.com>2018-12-14 18:06:12 -0500
commit81ba5acf7c9e0bfe30941476847571e09f022898 (patch)
treea92f44659da2175a54b7afde688bf14b2d7f3b09 /MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs
parent28a2774883ac522159c845cb16e60c53b1389f15 (diff)
parent1d7d52ff9e42c3efb4bb2c65e82a4a82faf9decb (diff)
Merge pull request #154 from MatMaul/mediaencoding
Port MediaEncoding and Api.Playback
Diffstat (limited to 'MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs')
-rw-r--r--MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs70
1 files changed, 70 insertions, 0 deletions
diff --git a/MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs b/MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs
new file mode 100644
index 000000000..dc3cb5f5e
--- /dev/null
+++ b/MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs
@@ -0,0 +1,70 @@
+using MediaBrowser.Model.MediaInfo;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace MediaBrowser.MediaEncoding.Encoder
+{
+ public static class EncodingUtils
+ {
+ public static string GetInputArgument(List<string> inputFiles, MediaProtocol protocol)
+ {
+ if (protocol != MediaProtocol.File)
+ {
+ var url = inputFiles.First();
+
+ return string.Format("\"{0}\"", url);
+ }
+
+ return GetConcatInputArgument(inputFiles);
+ }
+
+ /// <summary>
+ /// Gets the concat input argument.
+ /// </summary>
+ /// <param name="inputFiles">The input files.</param>
+ /// <returns>System.String.</returns>
+ private static string GetConcatInputArgument(IReadOnlyList<string> inputFiles)
+ {
+ // Get all streams
+ // If there's more than one we'll need to use the concat command
+ if (inputFiles.Count > 1)
+ {
+ var files = string.Join("|", inputFiles.Select(NormalizePath).ToArray());
+
+ return string.Format("concat:\"{0}\"", files);
+ }
+
+ // Determine the input path for video files
+ return GetFileInputArgument(inputFiles[0]);
+ }
+
+ /// <summary>
+ /// Gets the file input argument.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns>System.String.</returns>
+ private static string GetFileInputArgument(string path)
+ {
+ if (path.IndexOf("://") != -1)
+ {
+ return string.Format("\"{0}\"", path);
+ }
+
+ // Quotes are valid path characters in linux and they need to be escaped here with a leading \
+ path = NormalizePath(path);
+
+ return string.Format("file:\"{0}\"", path);
+ }
+
+ /// <summary>
+ /// Normalizes the path.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns>System.String.</returns>
+ private static string NormalizePath(string path)
+ {
+ // Quotes are valid path characters in linux and they need to be escaped here with a leading \
+ return path.Replace("\"", "\\\"");
+ }
+ }
+}