System.Diagnostics.Process管道(垂直条)不被接受为参数

emp*_*emp 5 c# command-line ffmpeg

我正在尝试执行以下代码(来源:http://geekswithblogs.net/PearlFactory/archive/2011/11/23/convert-mp3-to-aacflac-to-aac-or-any-other-combination.aspx)使用System.Diagnostics.Process.它在命令行中运行良好.但在C#中它失败了 字符.

var myProcess = new Process();
var p = new ProcessStartInfo();

var sArgs = " -i emp.mp3 -f wav - | neroAacEnc -ignorelength -q 0.5 -if - -of emp.mp4";
p.FileName = "ffmpeg.exe";
p.CreateNoWindow = false;
p.RedirectStandardOutput = false;
p.UseShellExecute = false;
p.Arguments = sArgs;

myProcess.StartInfo = p;

myProcess.Start();
myProcess.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

无法为"|"找到合适的输出格式:参数无效

我查看了stackoverflow并找到了以下提示,但它也无法正常工作:

var psi = new ProcessStartInfo("ffmpeg.exe");
psi.Arguments = 
    "\"-i emp.mp3 -f wav -\" | \"neroAacEnc -ignorelength -q 0.5 -if - -of emp.mp4\"";
psi.CreateNoWindow = false;
psi.UseShellExecute = false;

var process = new Process { StartInfo = psi };

process.Start();
process.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

给出以下错误:

无法识别的选项'i emp.mp3 -f wav - '
无法设置值'|' 选项'i emp.mp3 -f wav - '

emp*_*emp 7

感谢的评论,这个问题已经解决了.只需调用cmd.exe并将完整命令传递给它:

var myProcess = new Process();
var p = new ProcessStartInfo("cmd.exe");
var sArgs = "/C ffmpeg.exe -i emp.mp3 -f wav - | neroAacEnc -ignorelength -q 0.5 -if - -of emp.mp4";
p.CreateNoWindow = false;
p.RedirectStandardOutput = false;
p.UseShellExecute = false;
p.Arguments = sArgs;
myProcess.StartInfo = p;
myProcess.Start();
myProcess.WaitForExit();
Run Code Online (Sandbox Code Playgroud)