Пример #1
0
        private string Get_ffmpegFile(string dir)
        {
            foreach (string file in DirectoryTools.GetAllFile(dir))
            {
                if (StringTools.IsSame("ffmpeg.exe", Path.GetFileName(file), true))
                {
                    return(file);
                }
            }

            return(null);
        }
Пример #2
0
        /// <summary>
        /// ワーカースレッドから呼ばれる。
        /// </summary>
        public void Main()
        {
            Gnd.ConvLog.Writeln("本処理を開始しました。");

            // 保留してたコピーを実行
            {
                Gnd.ConvLog.Writeln("Files_PrepCopy.1");

                for (int index = 0; index < Files_PrepCopy.Count; index += 2)
                {
                    string rFile = Files_PrepCopy[index + 0];
                    string wFile = Files_PrepCopy[index + 1];

                    Gnd.ConvLog.Writeln("< " + rFile);
                    Gnd.ConvLog.Writeln("> " + wFile);

                    File.Copy(rFile, wFile);
                }
                Gnd.ConvLog.Writeln("Files_PrepCopy.2");
            }

            ffmpegのテスト();

            SameDir = Gnd.SameDir;

            if (SameDir)
            {
                ErrorFileCopy        = false;
                NotProcessedFileCopy = false;
                OtherFileCopy        = false;
            }
            else
            {
                ErrorFileCopy        = Gnd.ErrorFileCopy;
                NotProcessedFileCopy = Gnd.NotProcessedCopy;
                OtherFileCopy        = Gnd.OtherFileCopy;
            }
            Gnd.ConvLog.Writeln("SameDir: " + SameDir);
            Gnd.ConvLog.Writeln("ErrorFileCopy: " + ErrorFileCopy);
            Gnd.ConvLog.Writeln("NotProcessedFileCopy: " + NotProcessedFileCopy);
            Gnd.ConvLog.Writeln("OtherFileCopy: " + OtherFileCopy);

            Gnd.ConvLog.Writeln("audio_movie_extensions: " + string.Join(" ", AudioMovieExts.GetExts()));

            List <string> files = DirectoryTools.GetAllFile(RDir);

            TotalFileCount = files.Count;

            for (int index = 0; index < files.Count; index++)
            {
                GC.Collect();
                //Gnd.BusyDlg.RequestGC = true;
                Gnd.BusyDlg.SetProgress((index + 1) * 1.0 / (files.Count + 1));

                {
                    string trailer     = "";
                    Color  statusColor = Color.Black;

                    if (this.LastFailedFile != null)
                    {
                        trailer = "\n最後に失敗したファイル:" + this.LastFailedFile;
                    }
                    if (1 <= this.ErrorFileCount || 1 <= this.FailedCopyFileCount)
                    {
                        statusColor = Color.Red;
                    }
                    Gnd.BusyDlg.SetStatus(
                        "総数:" + this.TotalFileCount +
                        "\n成功:" + this.ProcessedFileCount +
                        " , 失敗:" + this.ErrorFileCount +
                        " , 処理不要:" + this.NotProcessedFileCount +
                        " , その他:" + this.OtherFileCount +
                        "\nコピー失敗:" + this.FailedCopyFileCount +
                        trailer,
                        statusColor
                        );
                }

                string file = files[index];

                Gnd.ConvLog.Writeln("----");
                Gnd.ConvLog.Writeln("[" + index + " / " + files.Count + "]");
                Gnd.ConvLog.Writeln("対象ファイル: " + file);

                switch (ConvFile(file))
                {
                case ConvFileRet_e.SUCCESSFUL:
                    Gnd.ConvLog.Writeln("対象ファイルの処理に成功しました。");
                    ProcessedFileCount++;
                    break;

                case ConvFileRet_e.ERROR:
                    Gnd.ConvLog.Writeln("対象ファイルの処理に失敗しました。");
                    ErrorFileCount++;
                    LastFailedFile = GetLocalFileUI(file);
                    if (ErrorFileCopy)
                    {
                        CopyFileRDirToWDir(file, "ERROR");
                    }
                    break;

                case ConvFileRet_e.NOT_PROCESSED:
                    Gnd.ConvLog.Writeln("対象ファイルは既に音量均一化されています。(処理不要)");
                    NotProcessedFileCount++;
                    if (NotProcessedFileCopy)
                    {
                        CopyFileRDirToWDir(file, "NO-PROC");
                    }
                    break;

                case ConvFileRet_e.OTHER_FILE:
                    Gnd.ConvLog.Writeln("対象ファイルは動画・音楽ファイルではありません。");
                    OtherFileCount++;
                    if (OtherFileCopy)
                    {
                        CopyFileRDirToWDir(file, "OTHER");
                    }
                    break;

                default:
                    throw null;
                }
            }
            Gnd.ConvLog.Writeln("----");
            Gnd.ConvLog.Writeln("本処理を終了しました。");

            Gnd.ConvLog.Writeln("====");
            Gnd.ConvLog.Writeln("ファイルの総数: " + TotalFileCount);
            Gnd.ConvLog.Writeln("処理に成功したファイル数: " + ProcessedFileCount);
            Gnd.ConvLog.Writeln("エラーになったファイル数: " + ErrorFileCount);
            Gnd.ConvLog.Writeln("既に音量均一化されていて処理しなかったファイル数: " + NotProcessedFileCount);
            Gnd.ConvLog.Writeln("その他のファイル数: " + OtherFileCount);
            Gnd.ConvLog.Writeln("コピーに失敗したファイル数: " + FailedCopyFileCount);
        }