コード例 #1
0
 public static EDanbiVideoExt getVideoExt(string vidExt)
 {
     if (vidExt == ".mp4")
     {
         return(EDanbiVideoExt.mp4);
     }
     else if (vidExt == ".avi")
     {
         return(EDanbiVideoExt.avi);
     }
     else if (vidExt == ".m4v")
     {
         return(EDanbiVideoExt.m4v);
     }
     else if (vidExt == ".mov")
     {
         return(EDanbiVideoExt.mov);
     }
     else if (vidExt == ".webm")
     {
         return(EDanbiVideoExt.webm);
     }
     else
     {
         DanbiUtils.LogErr("not valid video extension! using default ext -> .mp4");
         return(EDanbiVideoExt.mp4);
     }
 }
コード例 #2
0
ファイル: DanbiVideoHelper.cs プロジェクト: kangel429/danbi
        // References.
        // https://infodbbase.tistory.com/90
        // https://trac.ffmpeg.org/wiki/Concatenate#differentcodec <- ffmpeg concat cmd arguments
        // http://mwultong.blogspot.com/2006/11/dos-file-copy-command.html <- copy/ move cmd arguments

        /// <summary>
        ///
        /// </summary>
        /// <param name="targetFileNames"></param>
        /// <param name="outputFileName"></param>
        /// <param name="ffmpegExecutableLocation"></param>
        public static System.Collections.IEnumerator ConcatVideoClips(string ffmpegExecutableLocation,
                                                                      string outputFileLocation,
                                                                      string outputFileName,
                                                                      string[] targetFileNames,
                                                                      EDanbiVideoExt ext)
        {
            // cmd argument "merging video with ffmpeg.exe"
            // ffmpeg -f concat -safe 0 -i VideoList.txt(target video clips names) -c copy output.mp4(output video file name)
            // string arg = $"ffmpeg -f concat -safe 0 -i {targetVideoClipFiles} -c copy {outputFileName}";
            string extstr      = DanbiFileExtensionHelper.getVideoExtString(ext);
            string outputFinal = $"{outputFileName}{extstr}";

            DanbiUtils.Log(outputFinal, EDanbiStringColor.teal);

            // Write the target video clips.
            using (var writer = new System.IO.StreamWriter($"{outputFileLocation}/{outputFileName}.txt", true))
            {
                for (var i = 0; i < targetFileNames.Length; ++i)
                {
                    if (!string.IsNullOrEmpty(targetFileNames[i]))
                    {
                        writer.WriteLine($"file '{targetFileNames[i]}'");
                    }
                }
                writer.Close();
            }

            if (new System.IO.FileInfo($"{outputFileLocation}/{outputFinal}").Exists)
            {
                System.IO.File.Delete($"{outputFileLocation}/{outputFinal}");
                yield return(null);
            }

            string arg = $"ffmpeg -f concat -safe 0 -i {outputFileName}.txt -c copy {outputFinal}";

            // DanbiUtils.Log(arg, EDanbiStringColor.teal);
            DanbiFileSys.OpenProcessWithArguments(outputFileLocation, arg);
            System.Diagnostics.Process.Start(@"" + outputFileLocation);
        }