using MediaBrowser.Model.IO; using MediaBrowser.Model.MediaInfo; using System; using System.Collections.Generic; using System.IO; using System.Linq; using MediaBrowser.Common.IO; using MediaBrowser.Controller.IO; namespace MediaBrowser.Controller.MediaEncoding { /// /// Class MediaEncoderHelpers /// public static class MediaEncoderHelpers { /// /// Gets the input argument. /// /// The file system. /// The video path. /// The protocol. /// The iso mount. /// The playable stream file names. /// System.String[][]. public static string[] GetInputArgument(IFileSystem fileSystem, string videoPath, MediaProtocol protocol, IIsoMount isoMount, List playableStreamFileNames) { if (playableStreamFileNames.Count > 0) { if (isoMount == null) { return GetPlayableStreamFiles(fileSystem, videoPath, playableStreamFileNames).ToArray(); } return GetPlayableStreamFiles(fileSystem, isoMount.MountedPath, playableStreamFileNames).ToArray(); } return new[] {videoPath}; } private static List GetPlayableStreamFiles(IFileSystem fileSystem, string rootPath, List filenames) { if (filenames.Count == 0) { return new List(); } var allFiles = fileSystem .GetFilePaths(rootPath, true) .ToList(); return filenames.Select(name => allFiles.FirstOrDefault(f => string.Equals(Path.GetFileName(f), name, StringComparison.OrdinalIgnoreCase))) .Where(f => !string.IsNullOrEmpty(f)) .ToList(); } } }