aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs
diff options
context:
space:
mode:
authorMathieu Velten <matmaul@gmail.com>2018-12-14 10:40:55 +0100
committerMathieu Velten <matmaul@gmail.com>2018-12-14 17:32:54 +0100
commit1d7d52ff9e42c3efb4bb2c65e82a4a82faf9decb (patch)
tree00a3f529458b5e3afa42c97ec4f46e1b65c3cf8e /MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs
parent64805410c21b1e4717a7f030f619bb2e7bd33d2a (diff)
Port MediaEncoding and Api.Playback from 10e57ce8d21b4516733894075001819f3cd6db6b
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("\"", "\\\"");
+ }
+ }
+}