private static void Main(string[] args) { ///*テスト用引数*/ //var testArgs = new List<string>() { // "-part", // "-ts", // @".\cap8s.ts", // "-ch", "A", // "-SequenceName", "160601200000122337" // }; //args = testArgs.ToArray(); //例外を捕捉する AppDomain.CurrentDomain.UnhandledException += OctNov.Excp.ExceptionInfo.OnUnhandledException; //初期設定 int[] trimFrame = null; //avsの有効フレーム範囲 try { bool initialized = module.Initialize(args); if (initialized == false) return; //有効フレーム範囲取得 var maker = new AvsVpyMaker(); trimFrame = maker.GetTrimFrame(); } catch (LGLException e) { Log.WriteLine(); Log.WriteLine(e.ToString()); return; } while (true) { //分割トリム作成 int[] splitTrim; if (PathList.IsPart) { //適度に分割して初回のチャプター作成を早くする。 int EndFrame_Max = trimFrame[1]; bool isLastSplit; splitTrim = module.MakeSplitTrim(EndFrame_Max, out isLastSplit); PathList.Update_IsLastSplit(isLastSplit); } else//IsAll { splitTrim = trimFrame; PathList.Update_IsLastSplit(true); } //フレーム検出 bool HasError = false; try { string batpath = module.MakeDetectorBat(splitTrim); module.RunDetectorBat(splitTrim, batpath); } catch (LGLException e) { /* * ◇エラー発生時の動作について * ・作成済みのavs *.p3.2000__3000.avs を削除 * ・ダミーavs *.p3.2000__2000.avs を作成 * 次回のLGLauncherでダミーavsの 2000, 2000を読み込んでもらう。 * * ◇チャプター出力について * エラーが発生してもチャプター出力は行う。 * Detect_PartNo()があるので *.p3.frame.cat.txtは作成しなくてはならない。 * 値は前回のチャプターと同じ値。 * IsLastPartならば join_logo_scpのlast_batch、chapter出力を実行する必要がある。 */ HasError = true; Log.WriteLine(); Log.WriteLine(e.ToString()); CleanWorkItem.Clean_OnError(); AvsVpyCommon.CreateDummy_OnError(); } //チャプター出力 try { var concat = Frame.EditFrame.Concat(splitTrim); Frame.EditFrame.OutputChapter(concat, splitTrim); } catch (LGLException e) { HasError = true; Log.WriteLine(); Log.WriteLine(e.ToString()); } if (PathList.IsLastSplit || PathList.IsAll || HasError) break; else PathList.IncrementPartNo(); //PartNo++ } Log.Close(); CleanWorkItem.Clean_Lastly(); }
/// <summary> /// フレーム検出 bat作成 /// </summary> public string MakeDetectorBat(int[] trimFrame) { //avs string avsPath; { var maker = new AvsVpyMaker(); avsPath = maker.MakeTrimScript(trimFrame); } //srt string srtPath; { int beginFrame = trimFrame[0]; double shiftSec = 1.0 * beginFrame / 29.970; srtPath = TimeShiftSrt.Make(shiftSec); } //bat string batPath = ""; { if (PathList.IsJLS) { var logo = LogoSelector.GetLogo(); var jl_cmd = PathList.JL_Cmd_OnRec; batPath = Bat_Join_Logo_Scp.Make_OnRec(avsPath, logo[0], jl_cmd); } else if (PathList.IsLG) { var logo_param = LogoSelector.GetLogo_and_Param(); batPath = Bat_LogoGuillo.Make(avsPath, srtPath, logo_param[0], logo_param[1]); } } return batPath; }