Loading src/VideoSlice.Cli/MainCommand.cs +14 −16 Original line number Diff line number Diff line Loading @@ -55,28 +55,28 @@ public class MainCommand : AsyncCommand<MainCommand.Settings> /// <param name="file"></param> /// <param name="dir"></param> /// <returns>两层数组,第一次是每个命令,第二次是命令中的参数。</returns> public static string[][] GenerateFfMpegCommand(Settings settings, IFile file, IDirectory dir) public static IEnumerable<string[]> GenerateFfMpegCommand(Settings settings, IFile file, IDirectory dir) { var files = GetFiles(settings, dir); var arr = new string[files.Length][]; var time = SimpleTimeSpanExpress.ToTimeSpan(settings.SliceTime); for (var i = 0; i < arr.Length; i++) foreach (var f in GetFiles(settings, dir)) { arr[i] = ["-i", files[i], "-vf", $"\"fps:1/{time.TotalSeconds}\"", $"{settings.Desc}{files[i]}_%03d.{settings.Format}"]; yield return [ "-i", f, "-vf", $"\"fps:1/{time.TotalSeconds}\"", Path.Join(settings.Desc, $"{f}_%03d.{settings.Format}") ]; } return arr; } public static string[] GetFiles(Settings settings, IDirectory dir) public static IEnumerable<string> GetFiles(Settings settings, IDirectory dir) { if (settings.File is { } s) return [s]; if (settings.File is { } s) yield break; var split = settings.VideoFormats.Split(','); var list = new List<string>(); foreach (var f in dir.EnumerateFiles(settings.Directory)) { foreach (var sp in split) Loading @@ -85,12 +85,10 @@ public class MainCommand : AsyncCommand<MainCommand.Settings> { if (settings.NoExecute) AnsiConsole.WriteLine($"找到: {f}"); list.Add(f); yield return f; } } } return list.ToArray(); } protected override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken) Loading @@ -99,7 +97,7 @@ public class MainCommand : AsyncCommand<MainCommand.Settings> { foreach (var arr in GenerateFfMpegCommand(settings, FileBridge.Default, DirectoryBridge.Default)) { AnsiConsole.WriteLine(string.Join('\u0020', arr)); AnsiConsole.WriteLine($"{settings.FfMpegPath}{string.Join('\u0020', arr)}"); } return 0; } Loading Loading
src/VideoSlice.Cli/MainCommand.cs +14 −16 Original line number Diff line number Diff line Loading @@ -55,28 +55,28 @@ public class MainCommand : AsyncCommand<MainCommand.Settings> /// <param name="file"></param> /// <param name="dir"></param> /// <returns>两层数组,第一次是每个命令,第二次是命令中的参数。</returns> public static string[][] GenerateFfMpegCommand(Settings settings, IFile file, IDirectory dir) public static IEnumerable<string[]> GenerateFfMpegCommand(Settings settings, IFile file, IDirectory dir) { var files = GetFiles(settings, dir); var arr = new string[files.Length][]; var time = SimpleTimeSpanExpress.ToTimeSpan(settings.SliceTime); for (var i = 0; i < arr.Length; i++) foreach (var f in GetFiles(settings, dir)) { arr[i] = ["-i", files[i], "-vf", $"\"fps:1/{time.TotalSeconds}\"", $"{settings.Desc}{files[i]}_%03d.{settings.Format}"]; yield return [ "-i", f, "-vf", $"\"fps:1/{time.TotalSeconds}\"", Path.Join(settings.Desc, $"{f}_%03d.{settings.Format}") ]; } return arr; } public static string[] GetFiles(Settings settings, IDirectory dir) public static IEnumerable<string> GetFiles(Settings settings, IDirectory dir) { if (settings.File is { } s) return [s]; if (settings.File is { } s) yield break; var split = settings.VideoFormats.Split(','); var list = new List<string>(); foreach (var f in dir.EnumerateFiles(settings.Directory)) { foreach (var sp in split) Loading @@ -85,12 +85,10 @@ public class MainCommand : AsyncCommand<MainCommand.Settings> { if (settings.NoExecute) AnsiConsole.WriteLine($"找到: {f}"); list.Add(f); yield return f; } } } return list.ToArray(); } protected override async Task<int> ExecuteAsync(CommandContext context, Settings settings, CancellationToken cancellationToken) Loading @@ -99,7 +97,7 @@ public class MainCommand : AsyncCommand<MainCommand.Settings> { foreach (var arr in GenerateFfMpegCommand(settings, FileBridge.Default, DirectoryBridge.Default)) { AnsiConsole.WriteLine(string.Join('\u0020', arr)); AnsiConsole.WriteLine($"{settings.FfMpegPath}{string.Join('\u0020', arr)}"); } return 0; } Loading