public static string RunX264Command(FileConfig fileConfig) { VedioConfig vedioConfig = fileConfig.VedioConfig; ProcessStartInfo processinfo = new ProcessStartInfo(); string x264exe = GetX264exeFullName(vedioConfig); if (!File.Exists(x264exe)) { throw new EncoderException("找不到指定程序:" + x264exe); } processinfo.FileName = x264exe; //processinfo.FileName = Environment.GetEnvironmentVariable("ComSpec"); string x264Line; string outputpath = "";; //processinfo.Arguments = "/c \"" + Path.Combine(Application.StartupPath, "tools\\avs4x264mod.exe") + "\" " + x264Line; //processinfo.UseShellExecute = false; //输出信息重定向 //processinfo.CreateNoWindow = true; //processinfo.RedirectStandardInput = true; //processinfo.RedirectStandardOutput = true; //processinfo.RedirectStandardError = false; //processinfo.WindowStyle = ProcessWindowStyle.Hidden; Process avsx264mod = new Process(); fileConfig.FillMediaInfo(); if (vedioConfig.BitType == EncoderBitrateType.crf) { Getx264Line(fileConfig, 0, out x264Line, out outputpath); processinfo.Arguments = x264Line; avsx264mod.StartInfo = processinfo; avsx264mod.Start(); avsx264mod.WaitForExit(); } else if (vedioConfig.BitType == EncoderBitrateType.twopass) { Getx264Line(fileConfig, 1, out x264Line, out outputpath); processinfo.Arguments = x264Line; avsx264mod.StartInfo = processinfo; avsx264mod.Start(); avsx264mod.WaitForExit(); Getx264Line(fileConfig, 2, out x264Line, out outputpath); processinfo.Arguments = x264Line; avsx264mod.StartInfo = processinfo; avsx264mod.Start(); avsx264mod.WaitForExit(); } avsx264mod.Dispose(); return(outputpath); }
public static string ffmpegPipeX264(FileConfig fileConfig) { fileConfig.FillMediaInfo(); VedioConfig vedioConfig = fileConfig.VedioConfig; ProcessStartInfo processinfo = new ProcessStartInfo(); string x264exe = GetX264exeFullName(vedioConfig); processinfo.FileName = Environment.GetEnvironmentVariable("ComSpec"); string x264Line; string outputpath = ""; Getx264Line(fileConfig, 1, out x264Line, out outputpath); string ffmpegline = TextManager.Mh + FFmpegCommand.FFmpegExecute + TextManager.Mh + string.Format(FFmpegCommand.ffmpegPipex265Args, fileConfig.VedioFileFullName.Maohao(), vedioConfig.ffmpeg4x265Args); processinfo.Arguments = "/c " + ffmpegline + x264exe + " " + x264Line + " -"; //processinfo.UseShellExecute = false; //输出信息重定向 //processinfo.CreateNoWindow = true; //processinfo.RedirectStandardInput = true; //processinfo.RedirectStandardOutput = true; //processinfo.RedirectStandardError = false; //processinfo.WindowStyle = ProcessWindowStyle.Hidden; Process avsx264mod = new Process(); if (vedioConfig.BitType == EncoderBitrateType.crf) { Getx264Line(fileConfig, 0, out x264Line, out outputpath); processinfo.Arguments = x264Line; avsx264mod.StartInfo = processinfo; avsx264mod.Start(); avsx264mod.WaitForExit(); } else if (vedioConfig.BitType == EncoderBitrateType.twopass) { Getx264Line(fileConfig, 1, out x264Line, out outputpath); processinfo.Arguments = x264Line; avsx264mod.StartInfo = processinfo; avsx264mod.Start(); avsx264mod.WaitForExit(); Getx264Line(fileConfig, 2, out x264Line, out outputpath); processinfo.Arguments = x264Line; avsx264mod.StartInfo = processinfo; avsx264mod.Start(); avsx264mod.WaitForExit(); } avsx264mod.Dispose(); return(outputpath); }