我正在尝试将ffmpeg.exe作为进程运行,并为其提供一些参数。该过程实际上在运行,我可以看到ffmpeg窗口打开了,但是什么也没发生。我也尝试在args中使用@ffmpeg
,但是没有运气。因此,我认为争论并没有传递给它。我已经从cmd手动运行ffmpeg.exe并使用了这些args,并且运行良好。这是代码,
public void ConvertVideo()
{
var dir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\\FFMpeg";
var ffmpeg = dir + "\\ffmpeg.exe";
var args = "ffmpeg -i 20180906194502.mp4 -ar 44100 -ac 2 -c:a aac -strict -2 -b:a 128k -c:v libx264 -preset veryslow -crf 20 output.mp4";
var process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.FileName = ffmpeg;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.WorkingDirectory = dir;
process.EnableRaisingEvents = true;
process.StartInfo.RedirectStandardInput = true;
process.Start();
process.StandardInput.WriteLine(args);
process.StandardInput.Flush();
process.StandardInput.Close();
process.WaitForExit();
}
答案 0 :(得分:2)
您没有传递'args'变量: process.StartInfo.Arguments = args;
答案 1 :(得分:2)
StartInfo内部有“ Arguments”属性。 您可以按照以下方式尝试吗?。
Process p= new Process();
p.StartInfo.FileName = ffmpeg ;
p.StartInfo.Arguments = args;
p.Start();