流程不带参数

时间:2018-09-11 06:17:38

标签: c# ffmpeg

我正在尝试将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();
}  

最重要的是,如果我运行这段代码,我只会看到此窗口,然后什么也没有发生。 ffmpeg window

2 个答案:

答案 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();