/// <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); }
/// <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); }
public MovieInfomation(GetMovieContext context, List <SoundPartInfo> partsData) { FromFileName = Path.GetFileNameWithoutExtension(context.InputMoviePath); Context = context; PartsData = partsData; }