public void 正常系_0秒から10秒分だけトリミングして保存() { FfmpegWrapper.Ffmpeg ffmpeg = new Ffmpeg(); string appdir = AppDomain.CurrentDomain.BaseDirectory; string InputFilePath = Path.Combine(appdir, "test.wmv"); string OutputFilePath = Path.Combine(appdir, Ffmpeg.SubFileName(InputFilePath, 2)); int start = 0; int duration = 5; ffmpeg.Triming(InputFilePath, OutputFilePath, start, duration); Assert.IsTrue(File.Exists(InputFilePath)); Assert.IsTrue(File.Exists(OutputFilePath)); }
//****************************************************// /// <summary> /// (非同期) トリミング処理 /// </summary> /// <param name="TargetFilePath"></param> /// <param name="duration"></param> /// <returns></returns> public void RunTriming(string TargetFilePath, int duration, bool OverwriteFlg) { string InputFilePath = TargetFilePath; int total_duration = ffmpeg.GetVideoDuration(TargetFilePath); // 例外処理 if (duration > total_duration) { WriteConsole("ファイルの時間が指定した切り取り時間よりも短いです。", FontColors.RED); return; } // Make Sub dir string SubDir = Path.Combine(Path.GetDirectoryName(InputFilePath), Path.GetFileNameWithoutExtension(InputFilePath)); Directory.CreateDirectory(SubDir); // 切り出す動画の数 int N = Convert.ToInt32(Math.Ceiling((double)total_duration / duration)); for (int i = 1; i <= N; i++) { // キャンセル処理 if (this.Cancel == true) { WriteConsole($"[CANCEL] サブジョブが、キャンセルされました", FontColors.RED); this.Cancel = false; return; } // プログレスバーの表示 string QuesProgressBar = ""; for (int j = 1; j <= (N - i); j++) { QuesProgressBar += "|"; } WriteConsole($"[TRIMING] {QuesProgressBar}", FontColors.GREEN); // 入出力の設定 string _OutFilePath = Ffmpeg.SubFileName(InputFilePath, i); string _OutFileName = Path.GetFileName(_OutFilePath); string NewOutFilePath = Path.Combine(SubDir, _OutFileName); int start = (i - 1) * duration; WriteConsole($"[TRIMING] Start:{start}s, Duration:{duration}s, Total:{total_duration}s"); // 出力ファイルの有無 if (File.Exists(NewOutFilePath)) { // 出力ファイルがある場合 if (OverwriteFlg) { // 上書きします ffmpeg.Triming(InputFilePath, NewOutFilePath, start, duration); } else { // ファイルが存在しており, 上書きしない WriteConsole($"[TRIMING] ファイルが存在します. 上書きしません."); } } else { // ない場合 新しく作ります ffmpeg.Triming(InputFilePath, NewOutFilePath, start, duration); } } }