Beispiel #1
0
        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();
        }
Beispiel #2
0
            /// <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;
            }