Esempio n. 1
0
        /// <summary>
        /// 動画から有音区間の情報を作成
        /// </summary>
        /// <param name="getMovieContext"></param>
        /// <returns></returns>
        private List <SoundPartInfo> CreatePartList(GetMovieContext getMovieContext)
        {
            var arguments = $@"-i {getMovieContext.InputMoviePath} -af silencedetect=noise={getMovieContext.NoSoundLevel}dB:d={getMovieContext.NoSoundTerm} -f null -";
            var rawinfo   = FfmpegExecute(arguments);

            var tmpInfo = rawinfo.Replace(Environment.NewLine, " ").Split(' ');

            List <SoundPartInfo> soundPartInfoList = new List <SoundPartInfo>();
            List <double>        startEndTimeList  = new List <double>();

            for (int i = 0; i < tmpInfo.Length; i++)
            {
                if (tmpInfo[i] == "silence_start:" || tmpInfo[i] == "silence_end:")
                {
                    startEndTimeList.Add(double.Parse(tmpInfo[i + 1]));
                }
            }

            int num = 0;

            for (int i = 0; i < startEndTimeList.Count; i += 2)
            {
                if (i == 0)
                {
                    continue;
                }

                soundPartInfoList.Add(new SoundPartInfo(num++, startEndTimeList[i - 1], startEndTimeList[i], getMovieContext.CreateTimeCondition));
            }

            return(soundPartInfoList);
        }
Esempio n. 2
0
        /// <summary>
        /// 元になる動画データの情報を取得
        /// </summary>
        /// <returns></returns>
        private List <GetMovieContext> CreateMovieContexts()
        {
            var curDirrectory  = System.IO.Directory.GetCurrentDirectory();
            var inputDirectory = this.TextBlockFileName.Text;

            string[] files = System.IO.Directory.GetFiles(
                inputDirectory, "*", System.IO.SearchOption.TopDirectoryOnly);
            var outputDir = inputDirectory + @"\output\";

            var tmpIntervalTime = this.IntervalTime.Text;
            var parseRet        = double.TryParse(tmpIntervalTime, out double intervalTime);

            if (parseRet)
            {
                intervalTime = 1 / intervalTime;
            }
            else
            {
                intervalTime = 1;
            }

            List <GetMovieContext> contexts = new List <GetMovieContext>();

            foreach (var file in files)
            {
                var context =
                    new GetMovieContext(file,
                                        outputDir,
                                        0,
                                        0,
                                        this.TxtCreateTimeCondition.Text,
                                        intervalTime,
                                        this.TxtNoSoundLevel.Text,
                                        this.TxtNoSoundTerm.Text);
                contexts.Add(context);
            }
            return(contexts);
        }
Esempio n. 3
0
 public MovieInfomation(GetMovieContext context, List <SoundPartInfo> partsData)
 {
     FromFileName = Path.GetFileNameWithoutExtension(context.InputMoviePath);
     Context      = context;
     PartsData    = partsData;
 }